changed namespace of asn1 ngap from 'ngap_nr' to simply 'ngap'

master
Francisco Paisana 3 years ago
parent cc635168dd
commit 40138c7125

@ -12,280 +12,280 @@
/******************************************************************************* /*******************************************************************************
* *
* 3GPP TS ASN1 NGAP NR v15.3.0 (2019-03) * 3GPP TS ASN1 NGAP v15.3.0 (2019-03)
* *
******************************************************************************/ ******************************************************************************/
#ifndef SRSASN1_NGAP_NR_H #ifndef SRSASN1_NGAP_H
#define SRSASN1_NGAP_NR_H #define SRSASN1_NGAP_H
#include "asn1_utils.h" #include "asn1_utils.h"
#include <cstdio> #include <cstdio>
#include <stdarg.h> #include <stdarg.h>
namespace asn1 { namespace asn1 {
namespace ngap_nr { namespace ngap {
/******************************************************************************* /*******************************************************************************
* Constant Definitions * Constant Definitions
******************************************************************************/ ******************************************************************************/
#define ASN1_NGAP_NR_ID_AMF_CFG_UPD 0 #define ASN1_NGAP_ID_AMF_CFG_UPD 0
#define ASN1_NGAP_NR_ID_AMF_STATUS_IND 1 #define ASN1_NGAP_ID_AMF_STATUS_IND 1
#define ASN1_NGAP_NR_ID_CELL_TRAFFIC_TRACE 2 #define ASN1_NGAP_ID_CELL_TRAFFIC_TRACE 2
#define ASN1_NGAP_NR_ID_DEACTIV_TRACE 3 #define ASN1_NGAP_ID_DEACTIV_TRACE 3
#define ASN1_NGAP_NR_ID_DL_NAS_TRANSPORT 4 #define ASN1_NGAP_ID_DL_NAS_TRANSPORT 4
#define ASN1_NGAP_NR_ID_DL_NON_UEASSOCIATED_NRP_PA_TRANSPORT 5 #define ASN1_NGAP_ID_DL_NON_UEASSOCIATED_NRP_PA_TRANSPORT 5
#define ASN1_NGAP_NR_ID_DL_RAN_CFG_TRANSFER 6 #define ASN1_NGAP_ID_DL_RAN_CFG_TRANSFER 6
#define ASN1_NGAP_NR_ID_DL_RAN_STATUS_TRANSFER 7 #define ASN1_NGAP_ID_DL_RAN_STATUS_TRANSFER 7
#define ASN1_NGAP_NR_ID_DL_UEASSOCIATED_NRP_PA_TRANSPORT 8 #define ASN1_NGAP_ID_DL_UEASSOCIATED_NRP_PA_TRANSPORT 8
#define ASN1_NGAP_NR_ID_ERROR_IND 9 #define ASN1_NGAP_ID_ERROR_IND 9
#define ASN1_NGAP_NR_ID_HO_CANCEL 10 #define ASN1_NGAP_ID_HO_CANCEL 10
#define ASN1_NGAP_NR_ID_HO_NOTIF 11 #define ASN1_NGAP_ID_HO_NOTIF 11
#define ASN1_NGAP_NR_ID_HO_PREP 12 #define ASN1_NGAP_ID_HO_PREP 12
#define ASN1_NGAP_NR_ID_HO_RES_ALLOC 13 #define ASN1_NGAP_ID_HO_RES_ALLOC 13
#define ASN1_NGAP_NR_ID_INIT_CONTEXT_SETUP 14 #define ASN1_NGAP_ID_INIT_CONTEXT_SETUP 14
#define ASN1_NGAP_NR_ID_INIT_UE_MSG 15 #define ASN1_NGAP_ID_INIT_UE_MSG 15
#define ASN1_NGAP_NR_ID_LOCATION_REPORT_CTRL 16 #define ASN1_NGAP_ID_LOCATION_REPORT_CTRL 16
#define ASN1_NGAP_NR_ID_LOCATION_REPORT_FAIL_IND 17 #define ASN1_NGAP_ID_LOCATION_REPORT_FAIL_IND 17
#define ASN1_NGAP_NR_ID_LOCATION_REPORT 18 #define ASN1_NGAP_ID_LOCATION_REPORT 18
#define ASN1_NGAP_NR_ID_NAS_NON_DELIVERY_IND 19 #define ASN1_NGAP_ID_NAS_NON_DELIVERY_IND 19
#define ASN1_NGAP_NR_ID_NG_RESET 20 #define ASN1_NGAP_ID_NG_RESET 20
#define ASN1_NGAP_NR_ID_NG_SETUP 21 #define ASN1_NGAP_ID_NG_SETUP 21
#define ASN1_NGAP_NR_ID_OVERLOAD_START 22 #define ASN1_NGAP_ID_OVERLOAD_START 22
#define ASN1_NGAP_NR_ID_OVERLOAD_STOP 23 #define ASN1_NGAP_ID_OVERLOAD_STOP 23
#define ASN1_NGAP_NR_ID_PAGING 24 #define ASN1_NGAP_ID_PAGING 24
#define ASN1_NGAP_NR_ID_PATH_SWITCH_REQUEST 25 #define ASN1_NGAP_ID_PATH_SWITCH_REQUEST 25
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_MODIFY 26 #define ASN1_NGAP_ID_PDU_SESSION_RES_MODIFY 26
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_MODIFY_IND 27 #define ASN1_NGAP_ID_PDU_SESSION_RES_MODIFY_IND 27
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_RELEASE 28 #define ASN1_NGAP_ID_PDU_SESSION_RES_RELEASE 28
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_SETUP 29 #define ASN1_NGAP_ID_PDU_SESSION_RES_SETUP 29
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_NOTIFY 30 #define ASN1_NGAP_ID_PDU_SESSION_RES_NOTIFY 30
#define ASN1_NGAP_NR_ID_PRIVATE_MSG 31 #define ASN1_NGAP_ID_PRIVATE_MSG 31
#define ASN1_NGAP_NR_ID_PWS_CANCEL 32 #define ASN1_NGAP_ID_PWS_CANCEL 32
#define ASN1_NGAP_NR_ID_PWS_FAIL_IND 33 #define ASN1_NGAP_ID_PWS_FAIL_IND 33
#define ASN1_NGAP_NR_ID_PWS_RESTART_IND 34 #define ASN1_NGAP_ID_PWS_RESTART_IND 34
#define ASN1_NGAP_NR_ID_RAN_CFG_UPD 35 #define ASN1_NGAP_ID_RAN_CFG_UPD 35
#define ASN1_NGAP_NR_ID_REROUTE_NAS_REQUEST 36 #define ASN1_NGAP_ID_REROUTE_NAS_REQUEST 36
#define ASN1_NGAP_NR_ID_RRC_INACTIVE_TRANSITION_REPORT 37 #define ASN1_NGAP_ID_RRC_INACTIVE_TRANSITION_REPORT 37
#define ASN1_NGAP_NR_ID_TRACE_FAIL_IND 38 #define ASN1_NGAP_ID_TRACE_FAIL_IND 38
#define ASN1_NGAP_NR_ID_TRACE_START 39 #define ASN1_NGAP_ID_TRACE_START 39
#define ASN1_NGAP_NR_ID_UE_CONTEXT_MOD 40 #define ASN1_NGAP_ID_UE_CONTEXT_MOD 40
#define ASN1_NGAP_NR_ID_UE_CONTEXT_RELEASE 41 #define ASN1_NGAP_ID_UE_CONTEXT_RELEASE 41
#define ASN1_NGAP_NR_ID_UE_CONTEXT_RELEASE_REQUEST 42 #define ASN1_NGAP_ID_UE_CONTEXT_RELEASE_REQUEST 42
#define ASN1_NGAP_NR_ID_UE_RADIO_CAP_CHECK 43 #define ASN1_NGAP_ID_UE_RADIO_CAP_CHECK 43
#define ASN1_NGAP_NR_ID_UE_RADIO_CAP_INFO_IND 44 #define ASN1_NGAP_ID_UE_RADIO_CAP_INFO_IND 44
#define ASN1_NGAP_NR_ID_UETNLA_BINDING_RELEASE 45 #define ASN1_NGAP_ID_UETNLA_BINDING_RELEASE 45
#define ASN1_NGAP_NR_ID_UL_NAS_TRANSPORT 46 #define ASN1_NGAP_ID_UL_NAS_TRANSPORT 46
#define ASN1_NGAP_NR_ID_UL_NON_UEASSOCIATED_NRP_PA_TRANSPORT 47 #define ASN1_NGAP_ID_UL_NON_UEASSOCIATED_NRP_PA_TRANSPORT 47
#define ASN1_NGAP_NR_ID_UL_RAN_CFG_TRANSFER 48 #define ASN1_NGAP_ID_UL_RAN_CFG_TRANSFER 48
#define ASN1_NGAP_NR_ID_UL_RAN_STATUS_TRANSFER 49 #define ASN1_NGAP_ID_UL_RAN_STATUS_TRANSFER 49
#define ASN1_NGAP_NR_ID_UL_UEASSOCIATED_NRP_PA_TRANSPORT 50 #define ASN1_NGAP_ID_UL_UEASSOCIATED_NRP_PA_TRANSPORT 50
#define ASN1_NGAP_NR_ID_WRITE_REPLACE_WARNING 51 #define ASN1_NGAP_ID_WRITE_REPLACE_WARNING 51
#define ASN1_NGAP_NR_ID_SECONDARY_RAT_DATA_USAGE_REPORT 52 #define ASN1_NGAP_ID_SECONDARY_RAT_DATA_USAGE_REPORT 52
#define ASN1_NGAP_NR_MAX_PRIVATE_IES 65535 #define ASN1_NGAP_MAX_PRIVATE_IES 65535
#define ASN1_NGAP_NR_MAX_PROTOCOL_EXTS 65535 #define ASN1_NGAP_MAX_PROTOCOL_EXTS 65535
#define ASN1_NGAP_NR_MAX_PROTOCOL_IES 65535 #define ASN1_NGAP_MAX_PROTOCOL_IES 65535
#define ASN1_NGAP_NR_MAXNOOF_ALLOWED_AREAS 16 #define ASN1_NGAP_MAXNOOF_ALLOWED_AREAS 16
#define ASN1_NGAP_NR_MAXNOOF_ALLOWED_S_NSSAIS 8 #define ASN1_NGAP_MAXNOOF_ALLOWED_S_NSSAIS 8
#define ASN1_NGAP_NR_MAXNOOF_BPLMNS 12 #define ASN1_NGAP_MAXNOOF_BPLMNS 12
#define ASN1_NGAP_NR_MAXNOOF_CELL_IDFOR_WARNING 65535 #define ASN1_NGAP_MAXNOOF_CELL_IDFOR_WARNING 65535
#define ASN1_NGAP_NR_MAXNOOF_CELLIN_AO_I 256 #define ASN1_NGAP_MAXNOOF_CELLIN_AO_I 256
#define ASN1_NGAP_NR_MAXNOOF_CELLIN_EAI 65535 #define ASN1_NGAP_MAXNOOF_CELLIN_EAI 65535
#define ASN1_NGAP_NR_MAXNOOF_CELLIN_TAI 65535 #define ASN1_NGAP_MAXNOOF_CELLIN_TAI 65535
#define ASN1_NGAP_NR_MAXNOOF_CELLSING_NB 16384 #define ASN1_NGAP_MAXNOOF_CELLSING_NB 16384
#define ASN1_NGAP_NR_MAXNOOF_CELLSINNGENB 256 #define ASN1_NGAP_MAXNOOF_CELLSINNGENB 256
#define ASN1_NGAP_NR_MAXNOOF_CELLSIN_UE_HISTORY_INFO 16 #define ASN1_NGAP_MAXNOOF_CELLSIN_UE_HISTORY_INFO 16
#define ASN1_NGAP_NR_MAXNOOF_CELLS_UE_MOVING_TRAJECTORY 16 #define ASN1_NGAP_MAXNOOF_CELLS_UE_MOVING_TRAJECTORY 16
#define ASN1_NGAP_NR_MAXNOOF_DRBS 32 #define ASN1_NGAP_MAXNOOF_DRBS 32
#define ASN1_NGAP_NR_MAXNOOF_EMERGENCY_AREA_ID 65535 #define ASN1_NGAP_MAXNOOF_EMERGENCY_AREA_ID 65535
#define ASN1_NGAP_NR_MAXNOOF_EA_IFOR_RESTART 256 #define ASN1_NGAP_MAXNOOF_EA_IFOR_RESTART 256
#define ASN1_NGAP_NR_MAXNOOF_EPLMNS 15 #define ASN1_NGAP_MAXNOOF_EPLMNS 15
#define ASN1_NGAP_NR_MAXNOOF_EPLMNS_PLUS_ONE 16 #define ASN1_NGAP_MAXNOOF_EPLMNS_PLUS_ONE 16
#define ASN1_NGAP_NR_MAXNOOF_ERABS 256 #define ASN1_NGAP_MAXNOOF_ERABS 256
#define ASN1_NGAP_NR_MAXNOOF_ERRORS 256 #define ASN1_NGAP_MAXNOOF_ERRORS 256
#define ASN1_NGAP_NR_MAXNOOF_FORB_TACS 4096 #define ASN1_NGAP_MAXNOOF_FORB_TACS 4096
#define ASN1_NGAP_NR_MAXNOOF_MULTI_CONNECT 4 #define ASN1_NGAP_MAXNOOF_MULTI_CONNECT 4
#define ASN1_NGAP_NR_MAXNOOF_MULTI_CONNECT_MINUS_ONE 3 #define ASN1_NGAP_MAXNOOF_MULTI_CONNECT_MINUS_ONE 3
#define ASN1_NGAP_NR_MAXNOOF_NG_CONNS_TO_RESET 65536 #define ASN1_NGAP_MAXNOOF_NG_CONNS_TO_RESET 65536
#define ASN1_NGAP_NR_MAXNOOF_PDU_SESSIONS 256 #define ASN1_NGAP_MAXNOOF_PDU_SESSIONS 256
#define ASN1_NGAP_NR_MAXNOOF_PLMNS 12 #define ASN1_NGAP_MAXNOOF_PLMNS 12
#define ASN1_NGAP_NR_MAXNOOF_QOS_FLOWS 64 #define ASN1_NGAP_MAXNOOF_QOS_FLOWS 64
#define ASN1_NGAP_NR_MAXNOOF_RAN_NODEIN_AO_I 64 #define ASN1_NGAP_MAXNOOF_RAN_NODEIN_AO_I 64
#define ASN1_NGAP_NR_MAXNOOF_RECOMMENDED_CELLS 16 #define ASN1_NGAP_MAXNOOF_RECOMMENDED_CELLS 16
#define ASN1_NGAP_NR_MAXNOOF_RECOMMENDED_RAN_NODES 16 #define ASN1_NGAP_MAXNOOF_RECOMMENDED_RAN_NODES 16
#define ASN1_NGAP_NR_MAXNOOF_AO_I 64 #define ASN1_NGAP_MAXNOOF_AO_I 64
#define ASN1_NGAP_NR_MAXNOOF_SERVED_GUAMIS 256 #define ASN1_NGAP_MAXNOOF_SERVED_GUAMIS 256
#define ASN1_NGAP_NR_MAXNOOF_SLICE_ITEMS 1024 #define ASN1_NGAP_MAXNOOF_SLICE_ITEMS 1024
#define ASN1_NGAP_NR_MAXNOOF_TACS 256 #define ASN1_NGAP_MAXNOOF_TACS 256
#define ASN1_NGAP_NR_MAXNOOF_TA_IFOR_INACTIVE 16 #define ASN1_NGAP_MAXNOOF_TA_IFOR_INACTIVE 16
#define ASN1_NGAP_NR_MAXNOOF_TA_IFOR_PAGING 16 #define ASN1_NGAP_MAXNOOF_TA_IFOR_PAGING 16
#define ASN1_NGAP_NR_MAXNOOF_TA_IFOR_RESTART 2048 #define ASN1_NGAP_MAXNOOF_TA_IFOR_RESTART 2048
#define ASN1_NGAP_NR_MAXNOOF_TA_IFOR_WARNING 65535 #define ASN1_NGAP_MAXNOOF_TA_IFOR_WARNING 65535
#define ASN1_NGAP_NR_MAXNOOF_TA_IIN_AO_I 16 #define ASN1_NGAP_MAXNOOF_TA_IIN_AO_I 16
#define ASN1_NGAP_NR_MAXNOOF_TIME_PERIODS 2 #define ASN1_NGAP_MAXNOOF_TIME_PERIODS 2
#define ASN1_NGAP_NR_MAXNOOF_TNLASSOCS 32 #define ASN1_NGAP_MAXNOOF_TNLASSOCS 32
#define ASN1_NGAP_NR_MAXNOOF_XN_EXT_TLAS 2 #define ASN1_NGAP_MAXNOOF_XN_EXT_TLAS 2
#define ASN1_NGAP_NR_MAXNOOF_XN_GTP_TLAS 16 #define ASN1_NGAP_MAXNOOF_XN_GTP_TLAS 16
#define ASN1_NGAP_NR_MAXNOOF_XN_TLAS 16 #define ASN1_NGAP_MAXNOOF_XN_TLAS 16
#define ASN1_NGAP_NR_ID_ALLOWED_NSSAI 0 #define ASN1_NGAP_ID_ALLOWED_NSSAI 0
#define ASN1_NGAP_NR_ID_AMF_NAME 1 #define ASN1_NGAP_ID_AMF_NAME 1
#define ASN1_NGAP_NR_ID_AMF_OVERLOAD_RESP 2 #define ASN1_NGAP_ID_AMF_OVERLOAD_RESP 2
#define ASN1_NGAP_NR_ID_AMF_SET_ID 3 #define ASN1_NGAP_ID_AMF_SET_ID 3
#define ASN1_NGAP_NR_ID_AMF_TNLASSOC_FAILED_TO_SETUP_LIST 4 #define ASN1_NGAP_ID_AMF_TNLASSOC_FAILED_TO_SETUP_LIST 4
#define ASN1_NGAP_NR_ID_AMF_TNLASSOC_SETUP_LIST 5 #define ASN1_NGAP_ID_AMF_TNLASSOC_SETUP_LIST 5
#define ASN1_NGAP_NR_ID_AMF_TNLASSOC_TO_ADD_LIST 6 #define ASN1_NGAP_ID_AMF_TNLASSOC_TO_ADD_LIST 6
#define ASN1_NGAP_NR_ID_AMF_TNLASSOC_TO_REM_LIST 7 #define ASN1_NGAP_ID_AMF_TNLASSOC_TO_REM_LIST 7
#define ASN1_NGAP_NR_ID_AMF_TNLASSOC_TO_UPD_LIST 8 #define ASN1_NGAP_ID_AMF_TNLASSOC_TO_UPD_LIST 8
#define ASN1_NGAP_NR_ID_AMF_TRAFFIC_LOAD_REDUCTION_IND 9 #define ASN1_NGAP_ID_AMF_TRAFFIC_LOAD_REDUCTION_IND 9
#define ASN1_NGAP_NR_ID_AMF_UE_NGAP_ID 10 #define ASN1_NGAP_ID_AMF_UE_NGAP_ID 10
#define ASN1_NGAP_NR_ID_ASSIST_DATA_FOR_PAGING 11 #define ASN1_NGAP_ID_ASSIST_DATA_FOR_PAGING 11
#define ASN1_NGAP_NR_ID_BROADCAST_CANCELLED_AREA_LIST 12 #define ASN1_NGAP_ID_BROADCAST_CANCELLED_AREA_LIST 12
#define ASN1_NGAP_NR_ID_BROADCAST_COMPLETED_AREA_LIST 13 #define ASN1_NGAP_ID_BROADCAST_COMPLETED_AREA_LIST 13
#define ASN1_NGAP_NR_ID_CANCEL_ALL_WARNING_MSGS 14 #define ASN1_NGAP_ID_CANCEL_ALL_WARNING_MSGS 14
#define ASN1_NGAP_NR_ID_CAUSE 15 #define ASN1_NGAP_ID_CAUSE 15
#define ASN1_NGAP_NR_ID_CELL_ID_LIST_FOR_RESTART 16 #define ASN1_NGAP_ID_CELL_ID_LIST_FOR_RESTART 16
#define ASN1_NGAP_NR_ID_CONCURRENT_WARNING_MSG_IND 17 #define ASN1_NGAP_ID_CONCURRENT_WARNING_MSG_IND 17
#define ASN1_NGAP_NR_ID_CORE_NETWORK_ASSIST_INFO 18 #define ASN1_NGAP_ID_CORE_NETWORK_ASSIST_INFO 18
#define ASN1_NGAP_NR_ID_CRIT_DIAGNOSTICS 19 #define ASN1_NGAP_ID_CRIT_DIAGNOSTICS 19
#define ASN1_NGAP_NR_ID_DATA_CODING_SCHEME 20 #define ASN1_NGAP_ID_DATA_CODING_SCHEME 20
#define ASN1_NGAP_NR_ID_DEFAULT_PAGING_DRX 21 #define ASN1_NGAP_ID_DEFAULT_PAGING_DRX 21
#define ASN1_NGAP_NR_ID_DIRECT_FORWARDING_PATH_AVAILABILITY 22 #define ASN1_NGAP_ID_DIRECT_FORWARDING_PATH_AVAILABILITY 22
#define ASN1_NGAP_NR_ID_EMERGENCY_AREA_ID_LIST_FOR_RESTART 23 #define ASN1_NGAP_ID_EMERGENCY_AREA_ID_LIST_FOR_RESTART 23
#define ASN1_NGAP_NR_ID_EMERGENCY_FALLBACK_IND 24 #define ASN1_NGAP_ID_EMERGENCY_FALLBACK_IND 24
#define ASN1_NGAP_NR_ID_EUTRA_CGI 25 #define ASN1_NGAP_ID_EUTRA_CGI 25
#define ASN1_NGAP_NR_ID_FIVE_G_S_TMSI 26 #define ASN1_NGAP_ID_FIVE_G_S_TMSI 26
#define ASN1_NGAP_NR_ID_GLOBAL_RAN_NODE_ID 27 #define ASN1_NGAP_ID_GLOBAL_RAN_NODE_ID 27
#define ASN1_NGAP_NR_ID_GUAMI 28 #define ASN1_NGAP_ID_GUAMI 28
#define ASN1_NGAP_NR_ID_HANDOV_TYPE 29 #define ASN1_NGAP_ID_HANDOV_TYPE 29
#define ASN1_NGAP_NR_ID_IMS_VOICE_SUPPORT_IND 30 #define ASN1_NGAP_ID_IMS_VOICE_SUPPORT_IND 30
#define ASN1_NGAP_NR_ID_IDX_TO_RFSP 31 #define ASN1_NGAP_ID_IDX_TO_RFSP 31
#define ASN1_NGAP_NR_ID_INFO_ON_RECOMMENDED_CELLS_AND_RAN_NODES_FOR_PAGING 32 #define ASN1_NGAP_ID_INFO_ON_RECOMMENDED_CELLS_AND_RAN_NODES_FOR_PAGING 32
#define ASN1_NGAP_NR_ID_LOCATION_REPORT_REQUEST_TYPE 33 #define ASN1_NGAP_ID_LOCATION_REPORT_REQUEST_TYPE 33
#define ASN1_NGAP_NR_ID_MASKED_IMEISV 34 #define ASN1_NGAP_ID_MASKED_IMEISV 34
#define ASN1_NGAP_NR_ID_MSG_ID 35 #define ASN1_NGAP_ID_MSG_ID 35
#define ASN1_NGAP_NR_ID_MOB_RESTRICT_LIST 36 #define ASN1_NGAP_ID_MOB_RESTRICT_LIST 36
#define ASN1_NGAP_NR_ID_NASC 37 #define ASN1_NGAP_ID_NASC 37
#define ASN1_NGAP_NR_ID_NAS_PDU 38 #define ASN1_NGAP_ID_NAS_PDU 38
#define ASN1_NGAP_NR_ID_NAS_SECURITY_PARAMS_FROM_NGRAN 39 #define ASN1_NGAP_ID_NAS_SECURITY_PARAMS_FROM_NGRAN 39
#define ASN1_NGAP_NR_ID_NEW_AMF_UE_NGAP_ID 40 #define ASN1_NGAP_ID_NEW_AMF_UE_NGAP_ID 40
#define ASN1_NGAP_NR_ID_NEW_SECURITY_CONTEXT_IND 41 #define ASN1_NGAP_ID_NEW_SECURITY_CONTEXT_IND 41
#define ASN1_NGAP_NR_ID_NGAP_MSG 42 #define ASN1_NGAP_ID_NGAP_MSG 42
#define ASN1_NGAP_NR_ID_NGRAN_CGI 43 #define ASN1_NGAP_ID_NGRAN_CGI 43
#define ASN1_NGAP_NR_ID_NGRAN_TRACE_ID 44 #define ASN1_NGAP_ID_NGRAN_TRACE_ID 44
#define ASN1_NGAP_NR_ID_NR_CGI 45 #define ASN1_NGAP_ID_NR_CGI 45
#define ASN1_NGAP_NR_ID_NRP_PA_PDU 46 #define ASN1_NGAP_ID_NRP_PA_PDU 46
#define ASN1_NGAP_NR_ID_NOF_BROADCASTS_REQUESTED 47 #define ASN1_NGAP_ID_NOF_BROADCASTS_REQUESTED 47
#define ASN1_NGAP_NR_ID_OLD_AMF 48 #define ASN1_NGAP_ID_OLD_AMF 48
#define ASN1_NGAP_NR_ID_OVERLOAD_START_NSSAI_LIST 49 #define ASN1_NGAP_ID_OVERLOAD_START_NSSAI_LIST 49
#define ASN1_NGAP_NR_ID_PAGING_DRX 50 #define ASN1_NGAP_ID_PAGING_DRX 50
#define ASN1_NGAP_NR_ID_PAGING_ORIGIN 51 #define ASN1_NGAP_ID_PAGING_ORIGIN 51
#define ASN1_NGAP_NR_ID_PAGING_PRIO 52 #define ASN1_NGAP_ID_PAGING_PRIO 52
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_ADMITTED_LIST 53 #define ASN1_NGAP_ID_PDU_SESSION_RES_ADMITTED_LIST 53
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_FAILED_TO_MODIFY_LIST_MOD_RES 54 #define ASN1_NGAP_ID_PDU_SESSION_RES_FAILED_TO_MODIFY_LIST_MOD_RES 54
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_FAILED_TO_SETUP_LIST_CXT_RES 55 #define ASN1_NGAP_ID_PDU_SESSION_RES_FAILED_TO_SETUP_LIST_CXT_RES 55
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_FAILED_TO_SETUP_LIST_HO_ACK 56 #define ASN1_NGAP_ID_PDU_SESSION_RES_FAILED_TO_SETUP_LIST_HO_ACK 56
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_FAILED_TO_SETUP_LIST_PS_REQ 57 #define ASN1_NGAP_ID_PDU_SESSION_RES_FAILED_TO_SETUP_LIST_PS_REQ 57
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_FAILED_TO_SETUP_LIST_SU_RES 58 #define ASN1_NGAP_ID_PDU_SESSION_RES_FAILED_TO_SETUP_LIST_SU_RES 58
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_HO_LIST 59 #define ASN1_NGAP_ID_PDU_SESSION_RES_HO_LIST 59
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_LIST_CXT_REL_CPL 60 #define ASN1_NGAP_ID_PDU_SESSION_RES_LIST_CXT_REL_CPL 60
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_LIST_HO_RQD 61 #define ASN1_NGAP_ID_PDU_SESSION_RES_LIST_HO_RQD 61
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_MODIFY_LIST_MOD_CFM 62 #define ASN1_NGAP_ID_PDU_SESSION_RES_MODIFY_LIST_MOD_CFM 62
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_MODIFY_LIST_MOD_IND 63 #define ASN1_NGAP_ID_PDU_SESSION_RES_MODIFY_LIST_MOD_IND 63
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_MODIFY_LIST_MOD_REQ 64 #define ASN1_NGAP_ID_PDU_SESSION_RES_MODIFY_LIST_MOD_REQ 64
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_MODIFY_LIST_MOD_RES 65 #define ASN1_NGAP_ID_PDU_SESSION_RES_MODIFY_LIST_MOD_RES 65
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_NOTIFY_LIST 66 #define ASN1_NGAP_ID_PDU_SESSION_RES_NOTIFY_LIST 66
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_RELEASED_LIST_NOT 67 #define ASN1_NGAP_ID_PDU_SESSION_RES_RELEASED_LIST_NOT 67
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_RELEASED_LIST_PS_ACK 68 #define ASN1_NGAP_ID_PDU_SESSION_RES_RELEASED_LIST_PS_ACK 68
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_RELEASED_LIST_PS_FAIL 69 #define ASN1_NGAP_ID_PDU_SESSION_RES_RELEASED_LIST_PS_FAIL 69
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_RELEASED_LIST_REL_RES 70 #define ASN1_NGAP_ID_PDU_SESSION_RES_RELEASED_LIST_REL_RES 70
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_SETUP_LIST_CXT_REQ 71 #define ASN1_NGAP_ID_PDU_SESSION_RES_SETUP_LIST_CXT_REQ 71
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_SETUP_LIST_CXT_RES 72 #define ASN1_NGAP_ID_PDU_SESSION_RES_SETUP_LIST_CXT_RES 72
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_SETUP_LIST_HO_REQ 73 #define ASN1_NGAP_ID_PDU_SESSION_RES_SETUP_LIST_HO_REQ 73
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_SETUP_LIST_SU_REQ 74 #define ASN1_NGAP_ID_PDU_SESSION_RES_SETUP_LIST_SU_REQ 74
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_SETUP_LIST_SU_RES 75 #define ASN1_NGAP_ID_PDU_SESSION_RES_SETUP_LIST_SU_RES 75
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_TO_BE_SWITCHED_DL_LIST 76 #define ASN1_NGAP_ID_PDU_SESSION_RES_TO_BE_SWITCHED_DL_LIST 76
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_SWITCHED_LIST 77 #define ASN1_NGAP_ID_PDU_SESSION_RES_SWITCHED_LIST 77
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_TO_RELEASE_LIST_HO_CMD 78 #define ASN1_NGAP_ID_PDU_SESSION_RES_TO_RELEASE_LIST_HO_CMD 78
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_TO_RELEASE_LIST_REL_CMD 79 #define ASN1_NGAP_ID_PDU_SESSION_RES_TO_RELEASE_LIST_REL_CMD 79
#define ASN1_NGAP_NR_ID_PLMN_SUPPORT_LIST 80 #define ASN1_NGAP_ID_PLMN_SUPPORT_LIST 80
#define ASN1_NGAP_NR_ID_PWS_FAILED_CELL_ID_LIST 81 #define ASN1_NGAP_ID_PWS_FAILED_CELL_ID_LIST 81
#define ASN1_NGAP_NR_ID_RAN_NODE_NAME 82 #define ASN1_NGAP_ID_RAN_NODE_NAME 82
#define ASN1_NGAP_NR_ID_RAN_PAGING_PRIO 83 #define ASN1_NGAP_ID_RAN_PAGING_PRIO 83
#define ASN1_NGAP_NR_ID_RAN_STATUS_TRANSFER_TRANSPARENT_CONTAINER 84 #define ASN1_NGAP_ID_RAN_STATUS_TRANSFER_TRANSPARENT_CONTAINER 84
#define ASN1_NGAP_NR_ID_RAN_UE_NGAP_ID 85 #define ASN1_NGAP_ID_RAN_UE_NGAP_ID 85
#define ASN1_NGAP_NR_ID_RELATIVE_AMF_CAPACITY 86 #define ASN1_NGAP_ID_RELATIVE_AMF_CAPACITY 86
#define ASN1_NGAP_NR_ID_REPEAT_PERIOD 87 #define ASN1_NGAP_ID_REPEAT_PERIOD 87
#define ASN1_NGAP_NR_ID_RESET_TYPE 88 #define ASN1_NGAP_ID_RESET_TYPE 88
#define ASN1_NGAP_NR_ID_ROUTING_ID 89 #define ASN1_NGAP_ID_ROUTING_ID 89
#define ASN1_NGAP_NR_ID_RRCESTABLISHMENT_CAUSE 90 #define ASN1_NGAP_ID_RRCESTABLISHMENT_CAUSE 90
#define ASN1_NGAP_NR_ID_RRC_INACTIVE_TRANSITION_REPORT_REQUEST 91 #define ASN1_NGAP_ID_RRC_INACTIVE_TRANSITION_REPORT_REQUEST 91
#define ASN1_NGAP_NR_ID_RRC_STATE 92 #define ASN1_NGAP_ID_RRC_STATE 92
#define ASN1_NGAP_NR_ID_SECURITY_CONTEXT 93 #define ASN1_NGAP_ID_SECURITY_CONTEXT 93
#define ASN1_NGAP_NR_ID_SECURITY_KEY 94 #define ASN1_NGAP_ID_SECURITY_KEY 94
#define ASN1_NGAP_NR_ID_SERIAL_NUM 95 #define ASN1_NGAP_ID_SERIAL_NUM 95
#define ASN1_NGAP_NR_ID_SERVED_GUAMI_LIST 96 #define ASN1_NGAP_ID_SERVED_GUAMI_LIST 96
#define ASN1_NGAP_NR_ID_SLICE_SUPPORT_LIST 97 #define ASN1_NGAP_ID_SLICE_SUPPORT_LIST 97
#define ASN1_NGAP_NR_ID_SON_CFG_TRANSFER_DL 98 #define ASN1_NGAP_ID_SON_CFG_TRANSFER_DL 98
#define ASN1_NGAP_NR_ID_SON_CFG_TRANSFER_UL 99 #define ASN1_NGAP_ID_SON_CFG_TRANSFER_UL 99
#define ASN1_NGAP_NR_ID_SOURCE_AMF_UE_NGAP_ID 100 #define ASN1_NGAP_ID_SOURCE_AMF_UE_NGAP_ID 100
#define ASN1_NGAP_NR_ID_SOURCE_TO_TARGET_TRANSPARENT_CONTAINER 101 #define ASN1_NGAP_ID_SOURCE_TO_TARGET_TRANSPARENT_CONTAINER 101
#define ASN1_NGAP_NR_ID_SUPPORTED_TA_LIST 102 #define ASN1_NGAP_ID_SUPPORTED_TA_LIST 102
#define ASN1_NGAP_NR_ID_TAI_LIST_FOR_PAGING 103 #define ASN1_NGAP_ID_TAI_LIST_FOR_PAGING 103
#define ASN1_NGAP_NR_ID_TAI_LIST_FOR_RESTART 104 #define ASN1_NGAP_ID_TAI_LIST_FOR_RESTART 104
#define ASN1_NGAP_NR_ID_TARGET_ID 105 #define ASN1_NGAP_ID_TARGET_ID 105
#define ASN1_NGAP_NR_ID_TARGET_TO_SOURCE_TRANSPARENT_CONTAINER 106 #define ASN1_NGAP_ID_TARGET_TO_SOURCE_TRANSPARENT_CONTAINER 106
#define ASN1_NGAP_NR_ID_TIME_TO_WAIT 107 #define ASN1_NGAP_ID_TIME_TO_WAIT 107
#define ASN1_NGAP_NR_ID_TRACE_ACTIVATION 108 #define ASN1_NGAP_ID_TRACE_ACTIVATION 108
#define ASN1_NGAP_NR_ID_TRACE_COLLECTION_ENTITY_IP_ADDRESS 109 #define ASN1_NGAP_ID_TRACE_COLLECTION_ENTITY_IP_ADDRESS 109
#define ASN1_NGAP_NR_ID_UE_AGGREGATE_MAXIMUM_BIT_RATE 110 #define ASN1_NGAP_ID_UE_AGGREGATE_MAXIMUM_BIT_RATE 110
#define ASN1_NGAP_NR_ID_UE_ASSOCIATED_LC_NG_CONN_LIST 111 #define ASN1_NGAP_ID_UE_ASSOCIATED_LC_NG_CONN_LIST 111
#define ASN1_NGAP_NR_ID_UE_CONTEXT_REQUEST 112 #define ASN1_NGAP_ID_UE_CONTEXT_REQUEST 112
#define ASN1_NGAP_NR_ID_UE_NGAP_IDS 114 #define ASN1_NGAP_ID_UE_NGAP_IDS 114
#define ASN1_NGAP_NR_ID_UE_PAGING_ID 115 #define ASN1_NGAP_ID_UE_PAGING_ID 115
#define ASN1_NGAP_NR_ID_UE_PRESENCE_IN_AREA_OF_INTEREST_LIST 116 #define ASN1_NGAP_ID_UE_PRESENCE_IN_AREA_OF_INTEREST_LIST 116
#define ASN1_NGAP_NR_ID_UE_RADIO_CAP 117 #define ASN1_NGAP_ID_UE_RADIO_CAP 117
#define ASN1_NGAP_NR_ID_UE_RADIO_CAP_FOR_PAGING 118 #define ASN1_NGAP_ID_UE_RADIO_CAP_FOR_PAGING 118
#define ASN1_NGAP_NR_ID_UE_SECURITY_CAP 119 #define ASN1_NGAP_ID_UE_SECURITY_CAP 119
#define ASN1_NGAP_NR_ID_UNAVAILABLE_GUAMI_LIST 120 #define ASN1_NGAP_ID_UNAVAILABLE_GUAMI_LIST 120
#define ASN1_NGAP_NR_ID_USER_LOCATION_INFO 121 #define ASN1_NGAP_ID_USER_LOCATION_INFO 121
#define ASN1_NGAP_NR_ID_WARNING_AREA_LIST 122 #define ASN1_NGAP_ID_WARNING_AREA_LIST 122
#define ASN1_NGAP_NR_ID_WARNING_MSG_CONTENTS 123 #define ASN1_NGAP_ID_WARNING_MSG_CONTENTS 123
#define ASN1_NGAP_NR_ID_WARNING_SECURITY_INFO 124 #define ASN1_NGAP_ID_WARNING_SECURITY_INFO 124
#define ASN1_NGAP_NR_ID_WARNING_TYPE 125 #define ASN1_NGAP_ID_WARNING_TYPE 125
#define ASN1_NGAP_NR_ID_ADD_UL_NGU_UP_TNL_INFO 126 #define ASN1_NGAP_ID_ADD_UL_NGU_UP_TNL_INFO 126
#define ASN1_NGAP_NR_ID_DATA_FORWARDING_NOT_POSSIBLE 127 #define ASN1_NGAP_ID_DATA_FORWARDING_NOT_POSSIBLE 127
#define ASN1_NGAP_NR_ID_DL_NGU_UP_TNL_INFO 128 #define ASN1_NGAP_ID_DL_NGU_UP_TNL_INFO 128
#define ASN1_NGAP_NR_ID_NETWORK_INSTANCE 129 #define ASN1_NGAP_ID_NETWORK_INSTANCE 129
#define ASN1_NGAP_NR_ID_PDU_SESSION_AGGREGATE_MAXIMUM_BIT_RATE 130 #define ASN1_NGAP_ID_PDU_SESSION_AGGREGATE_MAXIMUM_BIT_RATE 130
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_FAILED_TO_MODIFY_LIST_MOD_CFM 131 #define ASN1_NGAP_ID_PDU_SESSION_RES_FAILED_TO_MODIFY_LIST_MOD_CFM 131
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_FAILED_TO_SETUP_LIST_CXT_FAIL 132 #define ASN1_NGAP_ID_PDU_SESSION_RES_FAILED_TO_SETUP_LIST_CXT_FAIL 132
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_LIST_CXT_REL_REQ 133 #define ASN1_NGAP_ID_PDU_SESSION_RES_LIST_CXT_REL_REQ 133
#define ASN1_NGAP_NR_ID_PDU_SESSION_TYPE 134 #define ASN1_NGAP_ID_PDU_SESSION_TYPE 134
#define ASN1_NGAP_NR_ID_QOS_FLOW_ADD_OR_MODIFY_REQUEST_LIST 135 #define ASN1_NGAP_ID_QOS_FLOW_ADD_OR_MODIFY_REQUEST_LIST 135
#define ASN1_NGAP_NR_ID_QOS_FLOW_SETUP_REQUEST_LIST 136 #define ASN1_NGAP_ID_QOS_FLOW_SETUP_REQUEST_LIST 136
#define ASN1_NGAP_NR_ID_QOS_FLOW_TO_RELEASE_LIST 137 #define ASN1_NGAP_ID_QOS_FLOW_TO_RELEASE_LIST 137
#define ASN1_NGAP_NR_ID_SECURITY_IND 138 #define ASN1_NGAP_ID_SECURITY_IND 138
#define ASN1_NGAP_NR_ID_UL_NGU_UP_TNL_INFO 139 #define ASN1_NGAP_ID_UL_NGU_UP_TNL_INFO 139
#define ASN1_NGAP_NR_ID_UL_NGU_UP_TNL_MODIFY_LIST 140 #define ASN1_NGAP_ID_UL_NGU_UP_TNL_MODIFY_LIST 140
#define ASN1_NGAP_NR_ID_WARNING_AREA_COORDINATES 141 #define ASN1_NGAP_ID_WARNING_AREA_COORDINATES 141
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_SECONDARY_RATUSAGE_LIST 142 #define ASN1_NGAP_ID_PDU_SESSION_RES_SECONDARY_RATUSAGE_LIST 142
#define ASN1_NGAP_NR_ID_HO_FLAG 143 #define ASN1_NGAP_ID_HO_FLAG 143
#define ASN1_NGAP_NR_ID_SECONDARY_RATUSAGE_INFO 144 #define ASN1_NGAP_ID_SECONDARY_RATUSAGE_INFO 144
#define ASN1_NGAP_NR_ID_PDU_SESSION_RES_RELEASE_RESP_TRANSFER 145 #define ASN1_NGAP_ID_PDU_SESSION_RES_RELEASE_RESP_TRANSFER 145
#define ASN1_NGAP_NR_ID_REDIRECTION_VOICE_FALLBACK 146 #define ASN1_NGAP_ID_REDIRECTION_VOICE_FALLBACK 146
#define ASN1_NGAP_NR_ID_UE_RETENTION_INFO 147 #define ASN1_NGAP_ID_UE_RETENTION_INFO 147
#define ASN1_NGAP_NR_ID_S_NSSAI 148 #define ASN1_NGAP_ID_S_NSSAI 148
#define ASN1_NGAP_NR_ID_PS_CELL_INFO 149 #define ASN1_NGAP_ID_PS_CELL_INFO 149
#define ASN1_NGAP_NR_ID_LAST_EUTRAN_PLMN_ID 150 #define ASN1_NGAP_ID_LAST_EUTRAN_PLMN_ID 150
#define ASN1_NGAP_NR_ID_MAXIMUM_INTEGRITY_PROTECTED_DATA_RATE_DL 151 #define ASN1_NGAP_ID_MAXIMUM_INTEGRITY_PROTECTED_DATA_RATE_DL 151
#define ASN1_NGAP_NR_ID_ADD_DL_FORWARDING_UPTNL_INFO 152 #define ASN1_NGAP_ID_ADD_DL_FORWARDING_UPTNL_INFO 152
#define ASN1_NGAP_NR_ID_ADD_DLUPTNL_INFO_FOR_HO_LIST 153 #define ASN1_NGAP_ID_ADD_DLUPTNL_INFO_FOR_HO_LIST 153
#define ASN1_NGAP_NR_ID_ADD_NGU_UP_TNL_INFO 154 #define ASN1_NGAP_ID_ADD_NGU_UP_TNL_INFO 154
#define ASN1_NGAP_NR_ID_ADD_DL_QOS_FLOW_PER_TNL_INFO 155 #define ASN1_NGAP_ID_ADD_DL_QOS_FLOW_PER_TNL_INFO 155
#define ASN1_NGAP_NR_ID_SECURITY_RESULT 156 #define ASN1_NGAP_ID_SECURITY_RESULT 156
#define ASN1_NGAP_NR_ID_ENDC_SON_CFG_TRANSFER_DL 157 #define ASN1_NGAP_ID_ENDC_SON_CFG_TRANSFER_DL 157
#define ASN1_NGAP_NR_ID_ENDC_SON_CFG_TRANSFER_UL 158 #define ASN1_NGAP_ID_ENDC_SON_CFG_TRANSFER_UL 158
/******************************************************************************* /*******************************************************************************
* Struct Definitions * Struct Definitions
@ -14993,7 +14993,7 @@ struct target_ngran_node_to_source_ngran_node_transparent_container_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
} // namespace ngap_nr } // namespace ngap
} // namespace asn1 } // namespace asn1
#endif // SRSASN1_NGAP_NR_H #endif // SRSASN1_NGAP_H

@ -20,7 +20,7 @@
***********************/ ***********************/
namespace asn1 { namespace asn1 {
namespace ngap_nr { namespace ngap {
struct rrcestablishment_cause_opts; struct rrcestablishment_cause_opts;
struct cause_radio_network_opts; struct cause_radio_network_opts;
using rrcestablishment_cause_e = enumerated<rrcestablishment_cause_opts, true, 1>; using rrcestablishment_cause_e = enumerated<rrcestablishment_cause_opts, true, 1>;

@ -34,22 +34,22 @@ struct ngap_args_t {
class ngap_interface_rrc_nr class ngap_interface_rrc_nr
{ {
public: public:
virtual void initial_ue(uint16_t rnti, virtual void initial_ue(uint16_t rnti,
uint32_t gnb_cc_idx, uint32_t gnb_cc_idx,
asn1::ngap_nr::rrcestablishment_cause_e cause, asn1::ngap::rrcestablishment_cause_e cause,
srsran::const_byte_span pdu) = 0; srsran::const_byte_span pdu) = 0;
virtual void initial_ue(uint16_t rnti, virtual void initial_ue(uint16_t rnti,
uint32_t gnb_cc_idx, uint32_t gnb_cc_idx,
asn1::ngap_nr::rrcestablishment_cause_e cause, asn1::ngap::rrcestablishment_cause_e cause,
srsran::const_byte_span pdu, srsran::const_byte_span pdu,
uint32_t m_tmsi) = 0; uint32_t m_tmsi) = 0;
virtual void write_pdu(uint16_t rnti, srsran::const_byte_span pdu) = 0; virtual void write_pdu(uint16_t rnti, srsran::const_byte_span pdu) = 0;
virtual bool user_exists(uint16_t rnti) = 0; virtual bool user_exists(uint16_t rnti) = 0;
virtual void user_mod(uint16_t old_rnti, uint16_t new_rnti) = 0; virtual void user_mod(uint16_t old_rnti, uint16_t new_rnti) = 0;
virtual void user_release_request(uint16_t rnti, asn1::ngap_nr::cause_radio_network_e cause_radio) = 0; virtual void user_release_request(uint16_t rnti, asn1::ngap::cause_radio_network_e cause_radio) = 0;
virtual bool is_amf_connected() = 0; virtual bool is_amf_connected() = 0;
virtual void ue_notify_rrc_reconf_complete(uint16_t rnti, bool outcome) = 0; virtual void ue_notify_rrc_reconf_complete(uint16_t rnti, bool outcome) = 0;
}; };
} // namespace srsenb } // namespace srsenb

@ -20,11 +20,11 @@ namespace srsenb {
class rrc_interface_ngap_nr class rrc_interface_ngap_nr
{ {
public: public:
virtual int ue_set_security_cfg_key(uint16_t rnti, const asn1::fixed_bitstring<256, false, true>& key) = 0; virtual int ue_set_security_cfg_key(uint16_t rnti, const asn1::fixed_bitstring<256, false, true>& key) = 0;
virtual int ue_set_bitrates(uint16_t rnti, const asn1::ngap_nr::ue_aggregate_maximum_bit_rate_s& rates) = 0; virtual int ue_set_bitrates(uint16_t rnti, const asn1::ngap::ue_aggregate_maximum_bit_rate_s& rates) = 0;
virtual int set_aggregate_max_bitrate(uint16_t rnti, const asn1::ngap_nr::ue_aggregate_maximum_bit_rate_s& rates) = 0; virtual int set_aggregate_max_bitrate(uint16_t rnti, const asn1::ngap::ue_aggregate_maximum_bit_rate_s& rates) = 0;
virtual int ue_set_security_cfg_capabilities(uint16_t rnti, const asn1::ngap_nr::ue_security_cap_s& caps) = 0; virtual int ue_set_security_cfg_capabilities(uint16_t rnti, const asn1::ngap::ue_security_cap_s& caps) = 0;
virtual int start_security_mode_procedure(uint16_t rnti, srsran::unique_byte_buffer_t nas_pdu) = 0; virtual int start_security_mode_procedure(uint16_t rnti, srsran::unique_byte_buffer_t nas_pdu) = 0;
virtual int virtual int
establish_rrc_bearer(uint16_t rnti, uint16_t pdu_session_id, srsran::const_byte_span nas_pdu, uint32_t lcid) = 0; establish_rrc_bearer(uint16_t rnti, uint16_t pdu_session_id, srsran::const_byte_span nas_pdu, uint32_t lcid) = 0;
virtual int allocate_lcid(uint16_t rnti) = 0; virtual int allocate_lcid(uint16_t rnti) = 0;

@ -196,35 +196,35 @@ SRSASN_CODE unpack_bits(T& val, Ptr& ptr, uint8_t& offset, const uint8_t* max_pt
} }
template SRSASN_CODE template SRSASN_CODE
unpack_bits<bool, uint8_t*>(bool& val, uint8_t*& ptr, uint8_t& offset, const uint8_t* max_ptr, uint32_t n_bits); unpack_bits<bool, uint8_t*>(bool& val, uint8_t*& ptr, uint8_t& offset, const uint8_t* max_ptr, uint32_t n_bits);
template SRSASN_CODE unpack_bits<bool, const uint8_t*>(bool& val, template SRSASN_CODE unpack_bits<bool, const uint8_t*>(bool& val,
const uint8_t*& ptr, const uint8_t*& ptr,
uint8_t& offset, uint8_t& offset,
const uint8_t* max_ptr, const uint8_t* max_ptr,
uint32_t n_bits); uint32_t n_bits);
template SRSASN_CODE template SRSASN_CODE
unpack_bits<uint8_t, uint8_t*>(uint8_t& val, uint8_t*& ptr, uint8_t& offset, const uint8_t* max_ptr, uint32_t n_bits); unpack_bits<uint8_t, uint8_t*>(uint8_t& val, uint8_t*& ptr, uint8_t& offset, const uint8_t* max_ptr, uint32_t n_bits);
template SRSASN_CODE unpack_bits<uint8_t, const uint8_t*>(uint8_t& val, template SRSASN_CODE unpack_bits<uint8_t, const uint8_t*>(uint8_t& val,
const uint8_t*& ptr, const uint8_t*& ptr,
uint8_t& offset, uint8_t& offset,
const uint8_t* max_ptr, const uint8_t* max_ptr,
uint32_t n_bits); uint32_t n_bits);
template SRSASN_CODE template SRSASN_CODE
unpack_bits<uint16_t, uint8_t*>(uint16_t& val, uint8_t*& ptr, uint8_t& offset, const uint8_t* max_ptr, uint32_t n_bits); unpack_bits<uint16_t, uint8_t*>(uint16_t& val, uint8_t*& ptr, uint8_t& offset, const uint8_t* max_ptr, uint32_t n_bits);
template SRSASN_CODE unpack_bits<uint16_t, const uint8_t*>(uint16_t& val, template SRSASN_CODE unpack_bits<uint16_t, const uint8_t*>(uint16_t& val,
const uint8_t*& ptr, const uint8_t*& ptr,
uint8_t& offset, uint8_t& offset,
const uint8_t* max_ptr, const uint8_t* max_ptr,
uint32_t n_bits); uint32_t n_bits);
template SRSASN_CODE template SRSASN_CODE
unpack_bits<uint32_t, uint8_t*>(uint32_t& val, uint8_t*& ptr, uint8_t& offset, const uint8_t* max_ptr, uint32_t n_bits); unpack_bits<uint32_t, uint8_t*>(uint32_t& val, uint8_t*& ptr, uint8_t& offset, const uint8_t* max_ptr, uint32_t n_bits);
template SRSASN_CODE unpack_bits<uint32_t, const uint8_t*>(uint32_t& val, template SRSASN_CODE unpack_bits<uint32_t, const uint8_t*>(uint32_t& val,
const uint8_t*& ptr, const uint8_t*& ptr,
uint8_t& offset, uint8_t& offset,
const uint8_t* max_ptr, const uint8_t* max_ptr,
uint32_t n_bits); uint32_t n_bits);
template SRSASN_CODE template SRSASN_CODE
unpack_bits<uint64_t, uint8_t*>(uint64_t& val, uint8_t*& ptr, uint8_t& offset, const uint8_t* max_ptr, uint32_t n_bits); unpack_bits<uint64_t, uint8_t*>(uint64_t& val, uint8_t*& ptr, uint8_t& offset, const uint8_t* max_ptr, uint32_t n_bits);
template SRSASN_CODE unpack_bits<uint64_t, const uint8_t*>(uint64_t& val, template SRSASN_CODE unpack_bits<uint64_t, const uint8_t*>(uint64_t& val,
const uint8_t*& ptr, const uint8_t*& ptr,
uint8_t& offset, uint8_t& offset,
@ -840,7 +840,7 @@ pack_integer<uint16_t>(bit_ref& bref, uint16_t n, uint16_t lb, uint16_t ub, bool
template SRSASN_CODE template SRSASN_CODE
pack_integer<uint32_t>(bit_ref& bref, uint32_t n, uint32_t lb, uint32_t ub, bool has_ext, bool aligned); pack_integer<uint32_t>(bit_ref& bref, uint32_t n, uint32_t lb, uint32_t ub, bool has_ext, bool aligned);
template SRSASN_CODE template SRSASN_CODE
pack_integer<uint64_t>(bit_ref& bref, uint64_t n, uint64_t lb, uint64_t ub, bool has_ext, bool aligned); pack_integer<uint64_t>(bit_ref& bref, uint64_t n, uint64_t lb, uint64_t ub, bool has_ext, bool aligned);
template SRSASN_CODE pack_integer<int8_t>(bit_ref& bref, int8_t n, int8_t lb, int8_t ub, bool has_ext, bool aligned); template SRSASN_CODE pack_integer<int8_t>(bit_ref& bref, int8_t n, int8_t lb, int8_t ub, bool has_ext, bool aligned);
template SRSASN_CODE template SRSASN_CODE
pack_integer<int16_t>(bit_ref& bref, int16_t n, int16_t lb, int16_t ub, bool has_ext, bool aligned); pack_integer<int16_t>(bit_ref& bref, int16_t n, int16_t lb, int16_t ub, bool has_ext, bool aligned);

@ -14,7 +14,7 @@
#include <sstream> #include <sstream>
using namespace asn1; using namespace asn1;
using namespace asn1::ngap_nr; using namespace asn1::ngap;
/******************************************************************************* /*******************************************************************************
* Struct Methods * Struct Methods
@ -1305,7 +1305,7 @@ void protocol_ie_container_item_s<valueT_>::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<amf_cfg_upd_ies_o>; template struct asn1::ngap::protocol_ie_field_s<amf_cfg_upd_ies_o>;
amf_cfg_upd_ies_container::amf_cfg_upd_ies_container() : amf_cfg_upd_ies_container::amf_cfg_upd_ies_container() :
amf_name(1, crit_e::reject), amf_name(1, crit_e::reject),
@ -2207,7 +2207,7 @@ const char* amf_cfg_upd_ack_ies_o::value_c::types_opts::to_string() const
return convert_enum_idx(options, 3, value, "amf_cfg_upd_ack_ies_o::value_c::types"); return convert_enum_idx(options, 3, value, "amf_cfg_upd_ack_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<amf_cfg_upd_ack_ies_o>; template struct asn1::ngap::protocol_ie_field_s<amf_cfg_upd_ack_ies_o>;
amf_cfg_upd_ack_ies_container::amf_cfg_upd_ack_ies_container() : amf_cfg_upd_ack_ies_container::amf_cfg_upd_ack_ies_container() :
amf_tnlassoc_setup_list(5, crit_e::ignore), amf_tnlassoc_setup_list(5, crit_e::ignore),
@ -2557,7 +2557,7 @@ const char* amf_cfg_upd_fail_ies_o::value_c::types_opts::to_string() const
return convert_enum_idx(options, 3, value, "amf_cfg_upd_fail_ies_o::value_c::types"); return convert_enum_idx(options, 3, value, "amf_cfg_upd_fail_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<amf_cfg_upd_fail_ies_o>; template struct asn1::ngap::protocol_ie_field_s<amf_cfg_upd_fail_ies_o>;
amf_cfg_upd_fail_ies_container::amf_cfg_upd_fail_ies_container() : amf_cfg_upd_fail_ies_container::amf_cfg_upd_fail_ies_container() :
cause(15, crit_e::ignore), time_to_wait(107, crit_e::ignore), crit_diagnostics(19, crit_e::ignore) cause(15, crit_e::ignore), time_to_wait(107, crit_e::ignore), crit_diagnostics(19, crit_e::ignore)
@ -6936,7 +6936,7 @@ const char* cell_traffic_trace_ies_o::value_c::types_opts::to_string() const
return convert_enum_idx(options, 5, value, "cell_traffic_trace_ies_o::value_c::types"); return convert_enum_idx(options, 5, value, "cell_traffic_trace_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<cell_traffic_trace_ies_o>; template struct asn1::ngap::protocol_ie_field_s<cell_traffic_trace_ies_o>;
cell_traffic_trace_ies_container::cell_traffic_trace_ies_container() : cell_traffic_trace_ies_container::cell_traffic_trace_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -8473,7 +8473,7 @@ const char* deactiv_trace_ies_o::value_c::types_opts::to_string() const
return convert_enum_idx(options, 3, value, "deactiv_trace_ies_o::value_c::types"); return convert_enum_idx(options, 3, value, "deactiv_trace_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<deactiv_trace_ies_o>; template struct asn1::ngap::protocol_ie_field_s<deactiv_trace_ies_o>;
deactiv_trace_ies_container::deactiv_trace_ies_container() : deactiv_trace_ies_container::deactiv_trace_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject), ngran_trace_id(44, crit_e::ignore) amf_ue_ngap_id(10, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject), ngran_trace_id(44, crit_e::ignore)
@ -9373,7 +9373,7 @@ const char* dl_nas_transport_ies_o::value_c::types_opts::to_string() const
return convert_enum_idx(options, 9, value, "dl_nas_transport_ies_o::value_c::types"); return convert_enum_idx(options, 9, value, "dl_nas_transport_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<dl_nas_transport_ies_o>; template struct asn1::ngap::protocol_ie_field_s<dl_nas_transport_ies_o>;
dl_nas_transport_ies_container::dl_nas_transport_ies_container() : dl_nas_transport_ies_container::dl_nas_transport_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -9758,7 +9758,7 @@ const char* dl_non_ueassociated_nrp_pa_transport_ies_o::value_c::types_opts::to_
return convert_enum_idx(options, 2, value, "dl_non_ueassociated_nrp_pa_transport_ies_o::value_c::types"); return convert_enum_idx(options, 2, value, "dl_non_ueassociated_nrp_pa_transport_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<dl_non_ueassociated_nrp_pa_transport_ies_o>; template struct asn1::ngap::protocol_ie_field_s<dl_non_ueassociated_nrp_pa_transport_ies_o>;
dl_non_ueassociated_nrp_pa_transport_ies_container::dl_non_ueassociated_nrp_pa_transport_ies_container() : dl_non_ueassociated_nrp_pa_transport_ies_container::dl_non_ueassociated_nrp_pa_transport_ies_container() :
routing_id(89, crit_e::reject), nrp_pa_pdu(46, crit_e::reject) routing_id(89, crit_e::reject), nrp_pa_pdu(46, crit_e::reject)
@ -10504,7 +10504,7 @@ const char* dl_ran_cfg_transfer_ies_o::value_c::types_opts::to_string() const
return convert_enum_idx(options, 2, value, "dl_ran_cfg_transfer_ies_o::value_c::types"); return convert_enum_idx(options, 2, value, "dl_ran_cfg_transfer_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<dl_ran_cfg_transfer_ies_o>; template struct asn1::ngap::protocol_ie_field_s<dl_ran_cfg_transfer_ies_o>;
dl_ran_cfg_transfer_ies_container::dl_ran_cfg_transfer_ies_container() : dl_ran_cfg_transfer_ies_container::dl_ran_cfg_transfer_ies_container() :
son_cfg_transfer_dl(98, crit_e::ignore), endc_son_cfg_transfer_dl(157, crit_e::ignore) son_cfg_transfer_dl(98, crit_e::ignore), endc_son_cfg_transfer_dl(157, crit_e::ignore)
@ -10864,7 +10864,7 @@ const char* dl_ran_status_transfer_ies_o::value_c::types_opts::to_string() const
return convert_enum_idx(options, 3, value, "dl_ran_status_transfer_ies_o::value_c::types"); return convert_enum_idx(options, 3, value, "dl_ran_status_transfer_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<dl_ran_status_transfer_ies_o>; template struct asn1::ngap::protocol_ie_field_s<dl_ran_status_transfer_ies_o>;
dl_ran_status_transfer_ies_container::dl_ran_status_transfer_ies_container() : dl_ran_status_transfer_ies_container::dl_ran_status_transfer_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -11226,7 +11226,7 @@ const char* dl_ueassociated_nrp_pa_transport_ies_o::value_c::types_opts::to_stri
return convert_enum_idx(options, 4, value, "dl_ueassociated_nrp_pa_transport_ies_o::value_c::types"); return convert_enum_idx(options, 4, value, "dl_ueassociated_nrp_pa_transport_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<dl_ueassociated_nrp_pa_transport_ies_o>; template struct asn1::ngap::protocol_ie_field_s<dl_ueassociated_nrp_pa_transport_ies_o>;
dl_ueassociated_nrp_pa_transport_ies_container::dl_ueassociated_nrp_pa_transport_ies_container() : dl_ueassociated_nrp_pa_transport_ies_container::dl_ueassociated_nrp_pa_transport_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -11891,7 +11891,7 @@ const char* error_ind_ies_o::value_c::types_opts::to_string() const
return convert_enum_idx(options, 4, value, "error_ind_ies_o::value_c::types"); return convert_enum_idx(options, 4, value, "error_ind_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<error_ind_ies_o>; template struct asn1::ngap::protocol_ie_field_s<error_ind_ies_o>;
error_ind_ies_container::error_ind_ies_container() : error_ind_ies_container::error_ind_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), amf_ue_ngap_id(10, crit_e::ignore),
@ -12365,7 +12365,7 @@ const char* ho_cancel_ies_o::value_c::types_opts::to_string() const
return convert_enum_idx(options, 3, value, "ho_cancel_ies_o::value_c::types"); return convert_enum_idx(options, 3, value, "ho_cancel_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ho_cancel_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ho_cancel_ies_o>;
ho_cancel_ies_container::ho_cancel_ies_container() : ho_cancel_ies_container::ho_cancel_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject), cause(15, crit_e::ignore) amf_ue_ngap_id(10, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject), cause(15, crit_e::ignore)
@ -12686,7 +12686,7 @@ const char* ho_cancel_ack_ies_o::value_c::types_opts::to_string() const
return convert_enum_idx(options, 3, value, "ho_cancel_ack_ies_o::value_c::types"); return convert_enum_idx(options, 3, value, "ho_cancel_ack_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ho_cancel_ack_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ho_cancel_ack_ies_o>;
ho_cancel_ack_ies_container::ho_cancel_ack_ies_container() : ho_cancel_ack_ies_container::ho_cancel_ack_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), ran_ue_ngap_id(85, crit_e::ignore), crit_diagnostics(19, crit_e::ignore) amf_ue_ngap_id(10, crit_e::ignore), ran_ue_ngap_id(85, crit_e::ignore), crit_diagnostics(19, crit_e::ignore)
@ -13298,7 +13298,7 @@ const char* ho_cmd_ies_o::value_c::types_opts::to_string() const
return convert_enum_idx(options, 8, value, "ho_cmd_ies_o::value_c::types"); return convert_enum_idx(options, 8, value, "ho_cmd_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ho_cmd_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ho_cmd_ies_o>;
ho_cmd_ies_container::ho_cmd_ies_container() : ho_cmd_ies_container::ho_cmd_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -13952,7 +13952,7 @@ uint8_t ho_fail_ies_o::value_c::types_opts::to_number() const
return map_enum_number(options, 1, value, "ho_fail_ies_o::value_c::types"); return map_enum_number(options, 1, value, "ho_fail_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ho_fail_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ho_fail_ies_o>;
ho_fail_ies_container::ho_fail_ies_container() : ho_fail_ies_container::ho_fail_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), cause(15, crit_e::ignore), crit_diagnostics(19, crit_e::ignore) amf_ue_ngap_id(10, crit_e::ignore), cause(15, crit_e::ignore), crit_diagnostics(19, crit_e::ignore)
@ -14620,7 +14620,7 @@ const char* ho_notify_ies_o::value_c::types_opts::to_string() const
return convert_enum_idx(options, 3, value, "ho_notify_ies_o::value_c::types"); return convert_enum_idx(options, 3, value, "ho_notify_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ho_notify_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ho_notify_ies_o>;
ho_notify_ies_container::ho_notify_ies_container() : ho_notify_ies_container::ho_notify_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject), user_location_info(121, crit_e::ignore) amf_ue_ngap_id(10, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject), user_location_info(121, crit_e::ignore)
@ -14981,7 +14981,7 @@ const char* ho_prep_fail_ies_o::value_c::types_opts::to_string() const
return convert_enum_idx(options, 4, value, "ho_prep_fail_ies_o::value_c::types"); return convert_enum_idx(options, 4, value, "ho_prep_fail_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ho_prep_fail_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ho_prep_fail_ies_o>;
ho_prep_fail_ies_container::ho_prep_fail_ies_container() : ho_prep_fail_ies_container::ho_prep_fail_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), amf_ue_ngap_id(10, crit_e::ignore),
@ -16289,7 +16289,7 @@ uint8_t ho_request_ies_o::value_c::types_opts::to_number() const
return 0; return 0;
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ho_request_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ho_request_ies_o>;
ho_request_ies_container::ho_request_ies_container() : ho_request_ies_container::ho_request_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -17024,7 +17024,7 @@ const char* ho_request_ack_ies_o::value_c::types_opts::to_string() const
return convert_enum_idx(options, 6, value, "ho_request_ack_ies_o::value_c::types"); return convert_enum_idx(options, 6, value, "ho_request_ack_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ho_request_ack_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ho_request_ack_ies_o>;
ho_request_ack_ies_container::ho_request_ack_ies_container() : ho_request_ack_ies_container::ho_request_ack_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), amf_ue_ngap_id(10, crit_e::ignore),
@ -18086,7 +18086,7 @@ const char* ho_required_ies_o::value_c::types_opts::to_string() const
return convert_enum_idx(options, 8, value, "ho_required_ies_o::value_c::types"); return convert_enum_idx(options, 8, value, "ho_required_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ho_required_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ho_required_ies_o>;
ho_required_ies_container::ho_required_ies_container() : ho_required_ies_container::ho_required_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -18802,7 +18802,7 @@ const char* init_context_setup_fail_ies_o::value_c::types_opts::to_string() cons
return convert_enum_idx(options, 5, value, "init_context_setup_fail_ies_o::value_c::types"); return convert_enum_idx(options, 5, value, "init_context_setup_fail_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<init_context_setup_fail_ies_o>; template struct asn1::ngap::protocol_ie_field_s<init_context_setup_fail_ies_o>;
init_context_setup_fail_ies_container::init_context_setup_fail_ies_container() : init_context_setup_fail_ies_container::init_context_setup_fail_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), amf_ue_ngap_id(10, crit_e::ignore),
@ -19938,7 +19938,7 @@ const char* init_context_setup_request_ies_o::value_c::types_opts::to_string() c
return convert_enum_idx(options, 20, value, "init_context_setup_request_ies_o::value_c::types"); return convert_enum_idx(options, 20, value, "init_context_setup_request_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<init_context_setup_request_ies_o>; template struct asn1::ngap::protocol_ie_field_s<init_context_setup_request_ies_o>;
init_context_setup_request_ies_container::init_context_setup_request_ies_container() : init_context_setup_request_ies_container::init_context_setup_request_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -20671,7 +20671,7 @@ const char* init_context_setup_resp_ies_o::value_c::types_opts::to_string() cons
return convert_enum_idx(options, 5, value, "init_context_setup_resp_ies_o::value_c::types"); return convert_enum_idx(options, 5, value, "init_context_setup_resp_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<init_context_setup_resp_ies_o>; template struct asn1::ngap::protocol_ie_field_s<init_context_setup_resp_ies_o>;
init_context_setup_resp_ies_container::init_context_setup_resp_ies_container() : init_context_setup_resp_ies_container::init_context_setup_resp_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), amf_ue_ngap_id(10, crit_e::ignore),
@ -21256,7 +21256,7 @@ uint8_t init_ue_msg_ies_o::value_c::types_opts::to_number() const
return map_enum_number(options, 1, value, "init_ue_msg_ies_o::value_c::types"); return map_enum_number(options, 1, value, "init_ue_msg_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<init_ue_msg_ies_o>; template struct asn1::ngap::protocol_ie_field_s<init_ue_msg_ies_o>;
init_ue_msg_ies_container::init_ue_msg_ies_container() : init_ue_msg_ies_container::init_ue_msg_ies_container() :
ran_ue_ngap_id(85, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject),
@ -38790,7 +38790,7 @@ const char* write_replace_warning_resp_ies_o::value_c::types_opts::to_string() c
return convert_enum_idx(options, 4, value, "write_replace_warning_resp_ies_o::value_c::types"); return convert_enum_idx(options, 4, value, "write_replace_warning_resp_ies_o::value_c::types");
} }
template struct asn1::ngap_nr::protocol_ie_field_s<location_report_ies_o>; template struct asn1::ngap::protocol_ie_field_s<location_report_ies_o>;
location_report_ies_container::location_report_ies_container() : location_report_ies_container::location_report_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -38924,7 +38924,7 @@ void location_report_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<location_report_ctrl_ies_o>; template struct asn1::ngap::protocol_ie_field_s<location_report_ctrl_ies_o>;
location_report_ctrl_ies_container::location_report_ctrl_ies_container() : location_report_ctrl_ies_container::location_report_ctrl_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -39018,7 +39018,7 @@ void location_report_ctrl_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<location_report_fail_ind_ies_o>; template struct asn1::ngap::protocol_ie_field_s<location_report_fail_ind_ies_o>;
location_report_fail_ind_ies_container::location_report_fail_ind_ies_container() : location_report_fail_ind_ies_container::location_report_fail_ind_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject), cause(15, crit_e::ignore) amf_ue_ngap_id(10, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject), cause(15, crit_e::ignore)
@ -39110,7 +39110,7 @@ void location_report_fail_ind_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<nas_non_delivery_ind_ies_o>; template struct asn1::ngap::protocol_ie_field_s<nas_non_delivery_ind_ies_o>;
nas_non_delivery_ind_ies_container::nas_non_delivery_ind_ies_container() : nas_non_delivery_ind_ies_container::nas_non_delivery_ind_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -39214,7 +39214,7 @@ void nas_non_delivery_ind_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ng_reset_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ng_reset_ies_o>;
ng_reset_ies_container::ng_reset_ies_container() : cause(15, crit_e::ignore), reset_type(88, crit_e::reject) {} ng_reset_ies_container::ng_reset_ies_container() : cause(15, crit_e::ignore), reset_type(88, crit_e::reject) {}
SRSASN_CODE ng_reset_ies_container::pack(bit_ref& bref) const SRSASN_CODE ng_reset_ies_container::pack(bit_ref& bref) const
@ -39295,7 +39295,7 @@ void ng_reset_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ng_reset_ack_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ng_reset_ack_ies_o>;
ng_reset_ack_ies_container::ng_reset_ack_ies_container() : ng_reset_ack_ies_container::ng_reset_ack_ies_container() :
ue_associated_lc_ng_conn_list(111, crit_e::ignore), crit_diagnostics(19, crit_e::ignore) ue_associated_lc_ng_conn_list(111, crit_e::ignore), crit_diagnostics(19, crit_e::ignore)
@ -39382,7 +39382,7 @@ void ng_reset_ack_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ng_setup_fail_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ng_setup_fail_ies_o>;
ng_setup_fail_ies_container::ng_setup_fail_ies_container() : ng_setup_fail_ies_container::ng_setup_fail_ies_container() :
cause(15, crit_e::ignore), time_to_wait(107, crit_e::ignore), crit_diagnostics(19, crit_e::ignore) cause(15, crit_e::ignore), time_to_wait(107, crit_e::ignore), crit_diagnostics(19, crit_e::ignore)
@ -39484,7 +39484,7 @@ void ng_setup_fail_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ng_setup_request_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ng_setup_request_ies_o>;
ng_setup_request_ies_container::ng_setup_request_ies_container() : ng_setup_request_ies_container::ng_setup_request_ies_container() :
global_ran_node_id(27, crit_e::reject), global_ran_node_id(27, crit_e::reject),
@ -39608,7 +39608,7 @@ void ng_setup_request_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ng_setup_resp_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ng_setup_resp_ies_o>;
ng_setup_resp_ies_container::ng_setup_resp_ies_container() : ng_setup_resp_ies_container::ng_setup_resp_ies_container() :
amf_name(1, crit_e::reject), amf_name(1, crit_e::reject),
@ -39742,7 +39742,7 @@ void ng_setup_resp_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<overload_start_ies_o>; template struct asn1::ngap::protocol_ie_field_s<overload_start_ies_o>;
overload_start_ies_container::overload_start_ies_container() : overload_start_ies_container::overload_start_ies_container() :
amf_overload_resp(2, crit_e::reject), amf_overload_resp(2, crit_e::reject),
@ -39890,7 +39890,7 @@ void overload_stop_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<pdu_session_res_modify_confirm_ies_o>; template struct asn1::ngap::protocol_ie_field_s<pdu_session_res_modify_confirm_ies_o>;
pdu_session_res_modify_confirm_ies_container::pdu_session_res_modify_confirm_ies_container() : pdu_session_res_modify_confirm_ies_container::pdu_session_res_modify_confirm_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), amf_ue_ngap_id(10, crit_e::ignore),
@ -40014,7 +40014,7 @@ void pdu_session_res_modify_confirm_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<pdu_session_res_modify_ind_ies_o>; template struct asn1::ngap::protocol_ie_field_s<pdu_session_res_modify_ind_ies_o>;
pdu_session_res_modify_ind_ies_container::pdu_session_res_modify_ind_ies_container() : pdu_session_res_modify_ind_ies_container::pdu_session_res_modify_ind_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -40108,7 +40108,7 @@ void pdu_session_res_modify_ind_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<pdu_session_res_modify_request_ies_o>; template struct asn1::ngap::protocol_ie_field_s<pdu_session_res_modify_request_ies_o>;
pdu_session_res_modify_request_ies_container::pdu_session_res_modify_request_ies_container() : pdu_session_res_modify_request_ies_container::pdu_session_res_modify_request_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -40217,7 +40217,7 @@ void pdu_session_res_modify_request_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<pdu_session_res_modify_resp_ies_o>; template struct asn1::ngap::protocol_ie_field_s<pdu_session_res_modify_resp_ies_o>;
pdu_session_res_modify_resp_ies_container::pdu_session_res_modify_resp_ies_container() : pdu_session_res_modify_resp_ies_container::pdu_session_res_modify_resp_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), amf_ue_ngap_id(10, crit_e::ignore),
@ -40361,7 +40361,7 @@ void pdu_session_res_modify_resp_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<pdu_session_res_notify_ies_o>; template struct asn1::ngap::protocol_ie_field_s<pdu_session_res_notify_ies_o>;
pdu_session_res_notify_ies_container::pdu_session_res_notify_ies_container() : pdu_session_res_notify_ies_container::pdu_session_res_notify_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -40490,7 +40490,7 @@ void pdu_session_res_notify_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<pdu_session_res_release_cmd_ies_o>; template struct asn1::ngap::protocol_ie_field_s<pdu_session_res_release_cmd_ies_o>;
pdu_session_res_release_cmd_ies_container::pdu_session_res_release_cmd_ies_container() : pdu_session_res_release_cmd_ies_container::pdu_session_res_release_cmd_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -40614,7 +40614,7 @@ void pdu_session_res_release_cmd_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<pdu_session_res_release_resp_ies_o>; template struct asn1::ngap::protocol_ie_field_s<pdu_session_res_release_resp_ies_o>;
pdu_session_res_release_resp_ies_container::pdu_session_res_release_resp_ies_container() : pdu_session_res_release_resp_ies_container::pdu_session_res_release_resp_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), amf_ue_ngap_id(10, crit_e::ignore),
@ -40738,7 +40738,7 @@ void pdu_session_res_release_resp_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<pdu_session_res_setup_request_ies_o>; template struct asn1::ngap::protocol_ie_field_s<pdu_session_res_setup_request_ies_o>;
pdu_session_res_setup_request_ies_container::pdu_session_res_setup_request_ies_container() : pdu_session_res_setup_request_ies_container::pdu_session_res_setup_request_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -40877,7 +40877,7 @@ void pdu_session_res_setup_request_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<pdu_session_res_setup_resp_ies_o>; template struct asn1::ngap::protocol_ie_field_s<pdu_session_res_setup_resp_ies_o>;
pdu_session_res_setup_resp_ies_container::pdu_session_res_setup_resp_ies_container() : pdu_session_res_setup_resp_ies_container::pdu_session_res_setup_resp_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), amf_ue_ngap_id(10, crit_e::ignore),
@ -41006,7 +41006,7 @@ void pdu_session_res_setup_resp_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<pws_cancel_request_ies_o>; template struct asn1::ngap::protocol_ie_field_s<pws_cancel_request_ies_o>;
pws_cancel_request_ies_container::pws_cancel_request_ies_container() : pws_cancel_request_ies_container::pws_cancel_request_ies_container() :
msg_id(35, crit_e::reject), msg_id(35, crit_e::reject),
@ -41120,7 +41120,7 @@ void pws_cancel_request_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<pws_cancel_resp_ies_o>; template struct asn1::ngap::protocol_ie_field_s<pws_cancel_resp_ies_o>;
pws_cancel_resp_ies_container::pws_cancel_resp_ies_container() : pws_cancel_resp_ies_container::pws_cancel_resp_ies_container() :
msg_id(35, crit_e::reject), msg_id(35, crit_e::reject),
@ -41234,7 +41234,7 @@ void pws_cancel_resp_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<pws_fail_ind_ies_o>; template struct asn1::ngap::protocol_ie_field_s<pws_fail_ind_ies_o>;
pws_fail_ind_ies_container::pws_fail_ind_ies_container() : pws_fail_ind_ies_container::pws_fail_ind_ies_container() :
pws_failed_cell_id_list(81, crit_e::reject), global_ran_node_id(27, crit_e::reject) pws_failed_cell_id_list(81, crit_e::reject), global_ran_node_id(27, crit_e::reject)
@ -41317,7 +41317,7 @@ void pws_fail_ind_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<pws_restart_ind_ies_o>; template struct asn1::ngap::protocol_ie_field_s<pws_restart_ind_ies_o>;
pws_restart_ind_ies_container::pws_restart_ind_ies_container() : pws_restart_ind_ies_container::pws_restart_ind_ies_container() :
cell_id_list_for_restart(16, crit_e::reject), cell_id_list_for_restart(16, crit_e::reject),
@ -41426,7 +41426,7 @@ void pws_restart_ind_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<paging_ies_o>; template struct asn1::ngap::protocol_ie_field_s<paging_ies_o>;
paging_ies_container::paging_ies_container() : paging_ies_container::paging_ies_container() :
ue_paging_id(115, crit_e::ignore), ue_paging_id(115, crit_e::ignore),
@ -41585,7 +41585,7 @@ void paging_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<path_switch_request_ies_o>; template struct asn1::ngap::protocol_ie_field_s<path_switch_request_ies_o>;
path_switch_request_ies_container::path_switch_request_ies_container() : path_switch_request_ies_container::path_switch_request_ies_container() :
ran_ue_ngap_id(85, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject),
@ -41714,7 +41714,7 @@ void path_switch_request_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<path_switch_request_ack_ies_o>; template struct asn1::ngap::protocol_ie_field_s<path_switch_request_ack_ies_o>;
path_switch_request_ack_ies_container::path_switch_request_ack_ies_container() : path_switch_request_ack_ies_container::path_switch_request_ack_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), amf_ue_ngap_id(10, crit_e::ignore),
@ -41933,7 +41933,7 @@ void path_switch_request_ack_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<path_switch_request_fail_ies_o>; template struct asn1::ngap::protocol_ie_field_s<path_switch_request_fail_ies_o>;
path_switch_request_fail_ies_container::path_switch_request_fail_ies_container() : path_switch_request_fail_ies_container::path_switch_request_fail_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), amf_ue_ngap_id(10, crit_e::ignore),
@ -42132,7 +42132,7 @@ void private_msg_s::to_json(json_writer& j) const
j.end_array(); j.end_array();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ran_cfg_upd_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ran_cfg_upd_ies_o>;
ran_cfg_upd_ies_container::ran_cfg_upd_ies_container() : ran_cfg_upd_ies_container::ran_cfg_upd_ies_container() :
ran_node_name(82, crit_e::ignore), ran_node_name(82, crit_e::ignore),
@ -42272,7 +42272,7 @@ void ran_cfg_upd_ack_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ran_cfg_upd_fail_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ran_cfg_upd_fail_ies_o>;
ran_cfg_upd_fail_ies_container::ran_cfg_upd_fail_ies_container() : ran_cfg_upd_fail_ies_container::ran_cfg_upd_fail_ies_container() :
cause(15, crit_e::ignore), time_to_wait(107, crit_e::ignore), crit_diagnostics(19, crit_e::ignore) cause(15, crit_e::ignore), time_to_wait(107, crit_e::ignore), crit_diagnostics(19, crit_e::ignore)
@ -42374,7 +42374,7 @@ void ran_cfg_upd_fail_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<rrc_inactive_transition_report_ies_o>; template struct asn1::ngap::protocol_ie_field_s<rrc_inactive_transition_report_ies_o>;
rrc_inactive_transition_report_ies_container::rrc_inactive_transition_report_ies_container() : rrc_inactive_transition_report_ies_container::rrc_inactive_transition_report_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -42478,7 +42478,7 @@ void rrc_inactive_transition_report_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<reroute_nas_request_ies_o>; template struct asn1::ngap::protocol_ie_field_s<reroute_nas_request_ies_o>;
reroute_nas_request_ies_container::reroute_nas_request_ies_container() : reroute_nas_request_ies_container::reroute_nas_request_ies_container() :
ran_ue_ngap_id(85, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject),
@ -42602,7 +42602,7 @@ void reroute_nas_request_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<secondary_rat_data_usage_report_ies_o>; template struct asn1::ngap::protocol_ie_field_s<secondary_rat_data_usage_report_ies_o>;
secondary_rat_data_usage_report_ies_container::secondary_rat_data_usage_report_ies_container() : secondary_rat_data_usage_report_ies_container::secondary_rat_data_usage_report_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), amf_ue_ngap_id(10, crit_e::ignore),
@ -42711,7 +42711,7 @@ void secondary_rat_data_usage_report_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<trace_fail_ind_ies_o>; template struct asn1::ngap::protocol_ie_field_s<trace_fail_ind_ies_o>;
trace_fail_ind_ies_container::trace_fail_ind_ies_container() : trace_fail_ind_ies_container::trace_fail_ind_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -42815,7 +42815,7 @@ void trace_fail_ind_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<trace_start_ies_o>; template struct asn1::ngap::protocol_ie_field_s<trace_start_ies_o>;
trace_start_ies_container::trace_start_ies_container() : trace_start_ies_container::trace_start_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject), trace_activation(108, crit_e::ignore) amf_ue_ngap_id(10, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject), trace_activation(108, crit_e::ignore)
@ -42907,7 +42907,7 @@ void trace_start_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ue_context_mod_fail_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ue_context_mod_fail_ies_o>;
ue_context_mod_fail_ies_container::ue_context_mod_fail_ies_container() : ue_context_mod_fail_ies_container::ue_context_mod_fail_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), amf_ue_ngap_id(10, crit_e::ignore),
@ -43016,7 +43016,7 @@ void ue_context_mod_fail_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ue_context_mod_request_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ue_context_mod_request_ies_o>;
ue_context_mod_request_ies_container::ue_context_mod_request_ies_container() : ue_context_mod_request_ies_container::ue_context_mod_request_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -43235,7 +43235,7 @@ void ue_context_mod_request_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ue_context_mod_resp_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ue_context_mod_resp_ies_o>;
ue_context_mod_resp_ies_container::ue_context_mod_resp_ies_container() : ue_context_mod_resp_ies_container::ue_context_mod_resp_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), amf_ue_ngap_id(10, crit_e::ignore),
@ -43364,7 +43364,7 @@ void ue_context_mod_resp_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ue_context_release_cmd_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ue_context_release_cmd_ies_o>;
ue_context_release_cmd_ies_container::ue_context_release_cmd_ies_container() : ue_context_release_cmd_ies_container::ue_context_release_cmd_ies_container() :
ue_ngap_ids(114, crit_e::reject), cause(15, crit_e::ignore) ue_ngap_ids(114, crit_e::reject), cause(15, crit_e::ignore)
@ -43447,7 +43447,7 @@ void ue_context_release_cmd_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ue_context_release_complete_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ue_context_release_complete_ies_o>;
ue_context_release_complete_ies_container::ue_context_release_complete_ies_container() : ue_context_release_complete_ies_container::ue_context_release_complete_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), amf_ue_ngap_id(10, crit_e::ignore),
@ -43592,7 +43592,7 @@ void ue_context_release_complete_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ue_context_release_request_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ue_context_release_request_ies_o>;
ue_context_release_request_ies_container::ue_context_release_request_ies_container() : ue_context_release_request_ies_container::ue_context_release_request_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -43701,7 +43701,7 @@ void ue_context_release_request_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ue_radio_cap_check_request_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ue_radio_cap_check_request_ies_o>;
ue_radio_cap_check_request_ies_container::ue_radio_cap_check_request_ies_container() : ue_radio_cap_check_request_ies_container::ue_radio_cap_check_request_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject), ue_radio_cap(117, crit_e::ignore) amf_ue_ngap_id(10, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject), ue_radio_cap(117, crit_e::ignore)
@ -43798,7 +43798,7 @@ void ue_radio_cap_check_request_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ue_radio_cap_check_resp_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ue_radio_cap_check_resp_ies_o>;
ue_radio_cap_check_resp_ies_container::ue_radio_cap_check_resp_ies_container() : ue_radio_cap_check_resp_ies_container::ue_radio_cap_check_resp_ies_container() :
amf_ue_ngap_id(10, crit_e::ignore), amf_ue_ngap_id(10, crit_e::ignore),
@ -43907,7 +43907,7 @@ void ue_radio_cap_check_resp_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ue_radio_cap_info_ind_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ue_radio_cap_info_ind_ies_o>;
ue_radio_cap_info_ind_ies_container::ue_radio_cap_info_ind_ies_container() : ue_radio_cap_info_ind_ies_container::ue_radio_cap_info_ind_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -44016,7 +44016,7 @@ void ue_radio_cap_info_ind_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<uetnla_binding_release_request_ies_o>; template struct asn1::ngap::protocol_ie_field_s<uetnla_binding_release_request_ies_o>;
uetnla_binding_release_request_ies_container::uetnla_binding_release_request_ies_container() : uetnla_binding_release_request_ies_container::uetnla_binding_release_request_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject) amf_ue_ngap_id(10, crit_e::reject), ran_ue_ngap_id(85, crit_e::reject)
@ -44099,7 +44099,7 @@ void uetnla_binding_release_request_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ul_nas_transport_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ul_nas_transport_ies_o>;
ul_nas_transport_ies_container::ul_nas_transport_ies_container() : ul_nas_transport_ies_container::ul_nas_transport_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -44203,7 +44203,7 @@ void ul_nas_transport_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ul_non_ueassociated_nrp_pa_transport_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ul_non_ueassociated_nrp_pa_transport_ies_o>;
ul_non_ueassociated_nrp_pa_transport_ies_container::ul_non_ueassociated_nrp_pa_transport_ies_container() : ul_non_ueassociated_nrp_pa_transport_ies_container::ul_non_ueassociated_nrp_pa_transport_ies_container() :
routing_id(89, crit_e::reject), nrp_pa_pdu(46, crit_e::reject) routing_id(89, crit_e::reject), nrp_pa_pdu(46, crit_e::reject)
@ -44286,7 +44286,7 @@ void ul_non_ueassociated_nrp_pa_transport_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ul_ran_cfg_transfer_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ul_ran_cfg_transfer_ies_o>;
ul_ran_cfg_transfer_ies_container::ul_ran_cfg_transfer_ies_container() : ul_ran_cfg_transfer_ies_container::ul_ran_cfg_transfer_ies_container() :
son_cfg_transfer_ul(99, crit_e::ignore), endc_son_cfg_transfer_ul(158, crit_e::ignore) son_cfg_transfer_ul(99, crit_e::ignore), endc_son_cfg_transfer_ul(158, crit_e::ignore)
@ -44373,7 +44373,7 @@ void ul_ran_cfg_transfer_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ul_ran_status_transfer_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ul_ran_status_transfer_ies_o>;
ul_ran_status_transfer_ies_container::ul_ran_status_transfer_ies_container() : ul_ran_status_transfer_ies_container::ul_ran_status_transfer_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -44467,7 +44467,7 @@ void ul_ran_status_transfer_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<ul_ueassociated_nrp_pa_transport_ies_o>; template struct asn1::ngap::protocol_ie_field_s<ul_ueassociated_nrp_pa_transport_ies_o>;
ul_ueassociated_nrp_pa_transport_ies_container::ul_ueassociated_nrp_pa_transport_ies_container() : ul_ueassociated_nrp_pa_transport_ies_container::ul_ueassociated_nrp_pa_transport_ies_container() :
amf_ue_ngap_id(10, crit_e::reject), amf_ue_ngap_id(10, crit_e::reject),
@ -44571,7 +44571,7 @@ void ul_ueassociated_nrp_pa_transport_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<write_replace_warning_request_ies_o>; template struct asn1::ngap::protocol_ie_field_s<write_replace_warning_request_ies_o>;
write_replace_warning_request_ies_container::write_replace_warning_request_ies_container() : write_replace_warning_request_ies_container::write_replace_warning_request_ies_container() :
msg_id(35, crit_e::reject), msg_id(35, crit_e::reject),
@ -44780,7 +44780,7 @@ void write_replace_warning_request_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
template struct asn1::ngap_nr::protocol_ie_field_s<write_replace_warning_resp_ies_o>; template struct asn1::ngap::protocol_ie_field_s<write_replace_warning_resp_ies_o>;
write_replace_warning_resp_ies_container::write_replace_warning_resp_ies_container() : write_replace_warning_resp_ies_container::write_replace_warning_resp_ies_container() :
msg_id(35, crit_e::reject), msg_id(35, crit_e::reject),
@ -49519,7 +49519,7 @@ const char* pdu_session_res_modify_ind_transfer_ext_ies_o::ext_c::types_opts::to
return convert_enum_idx(options, 2, value, "pdu_session_res_modify_ind_transfer_ext_ies_o::ext_c::types"); return convert_enum_idx(options, 2, value, "pdu_session_res_modify_ind_transfer_ext_ies_o::ext_c::types");
} }
template struct asn1::ngap_nr::protocol_ext_field_s<pdu_session_res_modify_ind_transfer_ext_ies_o>; template struct asn1::ngap::protocol_ext_field_s<pdu_session_res_modify_ind_transfer_ext_ies_o>;
pdu_session_res_modify_ind_transfer_ext_ies_container::pdu_session_res_modify_ind_transfer_ext_ies_container() : pdu_session_res_modify_ind_transfer_ext_ies_container::pdu_session_res_modify_ind_transfer_ext_ies_container() :
secondary_ratusage_info(144, crit_e::ignore), security_result(156, crit_e::ignore) secondary_ratusage_info(144, crit_e::ignore), security_result(156, crit_e::ignore)
@ -50448,7 +50448,7 @@ uint8_t pdu_session_res_modify_request_transfer_ies_o::value_c::types_opts::to_n
return 0; return 0;
} }
template struct asn1::ngap_nr::protocol_ie_field_s<pdu_session_res_modify_request_transfer_ies_o>; template struct asn1::ngap::protocol_ie_field_s<pdu_session_res_modify_request_transfer_ies_o>;
pdu_session_res_modify_request_transfer_ies_container::pdu_session_res_modify_request_transfer_ies_container() : pdu_session_res_modify_request_transfer_ies_container::pdu_session_res_modify_request_transfer_ies_container() :
pdu_session_aggregate_maximum_bit_rate(130, crit_e::reject), pdu_session_aggregate_maximum_bit_rate(130, crit_e::reject),
@ -51898,7 +51898,7 @@ uint8_t pdu_session_res_setup_request_transfer_ies_o::value_c::types_opts::to_nu
return 0; return 0;
} }
template struct asn1::ngap_nr::protocol_ie_field_s<pdu_session_res_setup_request_transfer_ies_o>; template struct asn1::ngap::protocol_ie_field_s<pdu_session_res_setup_request_transfer_ies_o>;
pdu_session_res_setup_request_transfer_ies_container::pdu_session_res_setup_request_transfer_ies_container() : pdu_session_res_setup_request_transfer_ies_container::pdu_session_res_setup_request_transfer_ies_container() :
pdu_session_aggregate_maximum_bit_rate(130, crit_e::reject), pdu_session_aggregate_maximum_bit_rate(130, crit_e::reject),

@ -14,7 +14,7 @@
#include "srsran/common/test_common.h" #include "srsran/common/test_common.h"
using namespace asn1; using namespace asn1;
using namespace asn1::ngap_nr; using namespace asn1::ngap;
/* TESTS */ /* TESTS */
@ -309,7 +309,7 @@ int test_session_res_setup_request()
TESTASSERT(pdu.init_msg().value.type().value == TESTASSERT(pdu.init_msg().value.type().value ==
ngap_elem_procs_o::init_msg_c::types_opts::pdu_session_res_setup_request); ngap_elem_procs_o::init_msg_c::types_opts::pdu_session_res_setup_request);
auto& container = pdu.init_msg().value.pdu_session_res_setup_request().protocol_ies; auto& container = pdu.init_msg().value.pdu_session_res_setup_request().protocol_ies;
TESTASSERT(container.pdu_session_res_setup_list_su_req.id == ASN1_NGAP_NR_ID_PDU_SESSION_RES_SETUP_LIST_SU_REQ); TESTASSERT(container.pdu_session_res_setup_list_su_req.id == ASN1_NGAP_ID_PDU_SESSION_RES_SETUP_LIST_SU_REQ);
TESTASSERT(container.pdu_session_res_setup_list_su_req.value.size() == 1); TESTASSERT(container.pdu_session_res_setup_list_su_req.value.size() == 1);
auto& item = container.pdu_session_res_setup_list_su_req.value[0]; auto& item = container.pdu_session_res_setup_list_su_req.value[0];
TESTASSERT(item.pdu_session_id == 1); TESTASSERT(item.pdu_session_id == 1);

@ -21,22 +21,22 @@ namespace srsenb {
class ngap_dummy : public ngap_interface_rrc_nr class ngap_dummy : public ngap_interface_rrc_nr
{ {
void initial_ue(uint16_t rnti, void initial_ue(uint16_t rnti,
uint32_t gnb_cc_idx, uint32_t gnb_cc_idx,
asn1::ngap_nr::rrcestablishment_cause_e cause, asn1::ngap::rrcestablishment_cause_e cause,
srsran::const_byte_span pdu) srsran::const_byte_span pdu)
{} {}
void initial_ue(uint16_t rnti, void initial_ue(uint16_t rnti,
uint32_t gnb_cc_idx, uint32_t gnb_cc_idx,
asn1::ngap_nr::rrcestablishment_cause_e cause, asn1::ngap::rrcestablishment_cause_e cause,
srsran::const_byte_span pdu, srsran::const_byte_span pdu,
uint32_t m_tmsi) uint32_t m_tmsi)
{} {}
void write_pdu(uint16_t rnti, srsran::const_byte_span pdu) {} void write_pdu(uint16_t rnti, srsran::const_byte_span pdu) {}
bool user_exists(uint16_t rnti) { return true; } bool user_exists(uint16_t rnti) { return true; }
void user_mod(uint16_t old_rnti, uint16_t new_rnti) {} void user_mod(uint16_t old_rnti, uint16_t new_rnti) {}
void user_release_request(uint16_t rnti, asn1::ngap_nr::cause_radio_network_e cause_radio) {} void user_release_request(uint16_t rnti, asn1::ngap::cause_radio_network_e cause_radio) {}
bool is_amf_connected() { return true; } bool is_amf_connected() { return true; }
void ue_notify_rrc_reconf_complete(uint16_t rnti, bool outcome) {} void ue_notify_rrc_reconf_complete(uint16_t rnti, bool outcome) {}
}; };

@ -48,27 +48,27 @@ public:
void stop(); void stop();
// RRC NR interface // RRC NR interface
void initial_ue(uint16_t rnti, void initial_ue(uint16_t rnti,
uint32_t gnb_cc_idx, uint32_t gnb_cc_idx,
asn1::ngap_nr::rrcestablishment_cause_e cause, asn1::ngap::rrcestablishment_cause_e cause,
srsran::const_byte_span pdu) override; srsran::const_byte_span pdu) override;
void initial_ue(uint16_t rnti, void initial_ue(uint16_t rnti,
uint32_t gnb_cc_idx, uint32_t gnb_cc_idx,
asn1::ngap_nr::rrcestablishment_cause_e cause, asn1::ngap::rrcestablishment_cause_e cause,
srsran::const_byte_span pdu, srsran::const_byte_span pdu,
uint32_t s_tmsi) override; uint32_t s_tmsi) override;
void write_pdu(uint16_t rnti, srsran::const_byte_span pdu) override; void write_pdu(uint16_t rnti, srsran::const_byte_span pdu) override;
bool user_exists(uint16_t rnti) override { return true; }; bool user_exists(uint16_t rnti) override { return true; };
void user_mod(uint16_t old_rnti, uint16_t new_rnti) override {} void user_mod(uint16_t old_rnti, uint16_t new_rnti) override {}
// TS 38.413 - Section 8.3.2 - UE Context Release Request // TS 38.413 - Section 8.3.2 - UE Context Release Request
void user_release_request(uint16_t rnti, asn1::ngap_nr::cause_radio_network_e cause_radio) override; void user_release_request(uint16_t rnti, asn1::ngap::cause_radio_network_e cause_radio) override;
bool is_amf_connected() override; bool is_amf_connected() override;
bool send_error_indication(const asn1::ngap_nr::cause_c& cause, bool send_error_indication(const asn1::ngap::cause_c& cause,
srsran::optional<uint32_t> ran_ue_ngap_id = {}, srsran::optional<uint32_t> ran_ue_ngap_id = {},
srsran::optional<uint32_t> amf_ue_ngap_id = {}); srsran::optional<uint32_t> amf_ue_ngap_id = {});
void ue_notify_rrc_reconf_complete(uint16_t rnti, bool outcome) override; void ue_notify_rrc_reconf_complete(uint16_t rnti, bool outcome) override;
bool send_pdu_session_resource_setup_response(); bool send_pdu_session_resource_setup_response();
@ -83,7 +83,7 @@ public:
// Logging // Logging
typedef enum { Rx = 0, Tx } direction_t; typedef enum { Rx = 0, Tx } direction_t;
void log_ngap_message(const asn1::ngap_nr::ngap_pdu_c& msg, const direction_t dir, srsran::const_byte_span pdu); void log_ngap_message(const asn1::ngap::ngap_pdu_c& msg, const direction_t dir, srsran::const_byte_span pdu);
private: private:
static const int AMF_PORT = 38412; static const int AMF_PORT = 38412;
@ -111,33 +111,33 @@ private:
srsran::unique_timer amf_connect_timer, ngsetup_timeout; srsran::unique_timer amf_connect_timer, ngsetup_timeout;
// Protocol IEs sent with every UL NGAP message // Protocol IEs sent with every UL NGAP message
asn1::ngap_nr::tai_s tai; asn1::ngap::tai_s tai;
asn1::ngap_nr::nr_cgi_s nr_cgi; asn1::ngap::nr_cgi_s nr_cgi;
asn1::ngap_nr::ng_setup_resp_s ngsetupresponse; asn1::ngap::ng_setup_resp_s ngsetupresponse;
int build_tai_cgi(); int build_tai_cgi();
bool connect_amf(); bool connect_amf();
bool setup_ng(); bool setup_ng();
bool sctp_send_ngap_pdu(const asn1::ngap_nr::ngap_pdu_c& tx_pdu, uint32_t rnti, const char* procedure_name); bool sctp_send_ngap_pdu(const asn1::ngap::ngap_pdu_c& tx_pdu, uint32_t rnti, const char* procedure_name);
bool handle_ngap_rx_pdu(srsran::byte_buffer_t* pdu); bool handle_ngap_rx_pdu(srsran::byte_buffer_t* pdu);
bool handle_successful_outcome(const asn1::ngap_nr::successful_outcome_s& msg); bool handle_successful_outcome(const asn1::ngap::successful_outcome_s& msg);
bool handle_unsuccessful_outcome(const asn1::ngap_nr::unsuccessful_outcome_s& msg); bool handle_unsuccessful_outcome(const asn1::ngap::unsuccessful_outcome_s& msg);
bool handle_initiating_message(const asn1::ngap_nr::init_msg_s& msg); bool handle_initiating_message(const asn1::ngap::init_msg_s& msg);
// TS 38.413 - Section 8.6.2 - Downlink NAS Transport // TS 38.413 - Section 8.6.2 - Downlink NAS Transport
bool handle_dl_nas_transport(const asn1::ngap_nr::dl_nas_transport_s& msg); bool handle_dl_nas_transport(const asn1::ngap::dl_nas_transport_s& msg);
// TS 38.413 - Section 9.2.6.2 - NG Setup Response // TS 38.413 - Section 9.2.6.2 - NG Setup Response
bool handle_ng_setup_response(const asn1::ngap_nr::ng_setup_resp_s& msg); bool handle_ng_setup_response(const asn1::ngap::ng_setup_resp_s& msg);
// TS 38.413 - Section 9.2.6.3 - NG Setup Failure // TS 38.413 - Section 9.2.6.3 - NG Setup Failure
bool handle_ng_setup_failure(const asn1::ngap_nr::ng_setup_fail_s& msg); bool handle_ng_setup_failure(const asn1::ngap::ng_setup_fail_s& msg);
// TS 38.413 - Section 9.2.2.5 - UE Context Release Command // TS 38.413 - Section 9.2.2.5 - UE Context Release Command
bool handle_ue_context_release_cmd(const asn1::ngap_nr::ue_context_release_cmd_s& msg); bool handle_ue_context_release_cmd(const asn1::ngap::ue_context_release_cmd_s& msg);
// TS 38.413 - Section 9.2.2.1 - Initial Context Setup Request // TS 38.413 - Section 9.2.2.1 - Initial Context Setup Request
bool handle_initial_ctxt_setup_request(const asn1::ngap_nr::init_context_setup_request_s& msg); bool handle_initial_ctxt_setup_request(const asn1::ngap::init_context_setup_request_s& msg);
// TS 38.413 - Section 9.2.1.1 - PDU Session Resource Setup Request // TS 38.413 - Section 9.2.1.1 - PDU Session Resource Setup Request
bool handle_ue_pdu_session_res_setup_request(const asn1::ngap_nr::pdu_session_res_setup_request_s& msg); bool handle_ue_pdu_session_res_setup_request(const asn1::ngap::pdu_session_res_setup_request_s& msg);
// PCAP // PCAP
srsran::ngap_pcap* pcap = nullptr; srsran::ngap_pcap* pcap = nullptr;
@ -192,8 +192,8 @@ private:
srsran::proc_t<ng_setup_proc_t> ngsetup_proc; srsran::proc_t<ng_setup_proc_t> ngsetup_proc;
std::string get_cause(const asn1::ngap_nr::cause_c& c); std::string get_cause(const asn1::ngap::cause_c& c);
void log_ngap_msg(const asn1::ngap_nr::ngap_pdu_c& msg, srsran::const_span<uint8_t> sdu, bool is_rx); void log_ngap_msg(const asn1::ngap::ngap_pdu_c& msg, srsran::const_span<uint8_t> sdu, bool is_rx);
}; };
} // namespace srsenb } // namespace srsenb

@ -30,16 +30,16 @@ public:
srslog::basic_logger& logger_); srslog::basic_logger& logger_);
virtual ~ue(); virtual ~ue();
// TS 38.413 - Section 9.2.5.1 - Initial UE Message // TS 38.413 - Section 9.2.5.1 - Initial UE Message
bool send_initial_ue_message(asn1::ngap_nr::rrcestablishment_cause_e cause, bool send_initial_ue_message(asn1::ngap::rrcestablishment_cause_e cause,
srsran::const_byte_span pdu, srsran::const_byte_span pdu,
bool has_tmsi, bool has_tmsi,
uint32_t s_tmsi = 0); uint32_t s_tmsi = 0);
// TS 38.413 - Section 9.2.5.3 - Uplink NAS Transport // TS 38.413 - Section 9.2.5.3 - Uplink NAS Transport
bool send_ul_nas_transport(srsran::const_byte_span pdu); bool send_ul_nas_transport(srsran::const_byte_span pdu);
// TS 38.413 - Section 9.2.2.2 - Initial Context Setup Response // TS 38.413 - Section 9.2.2.2 - Initial Context Setup Response
bool send_initial_ctxt_setup_response(); bool send_initial_ctxt_setup_response();
// TS 38.413 - Section 9.2.2.3 - Initial Context Setup Failure // TS 38.413 - Section 9.2.2.3 - Initial Context Setup Failure
bool send_initial_ctxt_setup_failure(asn1::ngap_nr::cause_c cause); bool send_initial_ctxt_setup_failure(asn1::ngap::cause_c cause);
// TS 38.413 - Section 9.2.1.2 - PDU Session Resource Setup Response // TS 38.413 - Section 9.2.1.2 - PDU Session Resource Setup Response
bool send_pdu_session_resource_setup_response(uint16_t pdu_session_id, bool send_pdu_session_resource_setup_response(uint16_t pdu_session_id,
uint32_t teid_in, uint32_t teid_in,
@ -47,13 +47,13 @@ public:
// TS 38.413 - Section 9.2.1.2 - UE Context Release Complete // TS 38.413 - Section 9.2.1.2 - UE Context Release Complete
bool send_ue_ctxt_release_complete(); bool send_ue_ctxt_release_complete();
// TS 38.413 - Section 9.2.2.1 - Initial Context Setup Request // TS 38.413 - Section 9.2.2.1 - Initial Context Setup Request
bool handle_initial_ctxt_setup_request(const asn1::ngap_nr::init_context_setup_request_s& msg); bool handle_initial_ctxt_setup_request(const asn1::ngap::init_context_setup_request_s& msg);
// TS 38.413 - Section 9.2.2.4 - UE Context Release Request // TS 38.413 - Section 9.2.2.4 - UE Context Release Request
bool send_ue_context_release_request(asn1::ngap_nr::cause_c cause); bool send_ue_context_release_request(asn1::ngap::cause_c cause);
// TS 38.413 - Section 9.2.2.5 - UE Context Release Command // TS 38.413 - Section 9.2.2.5 - UE Context Release Command
bool handle_ue_context_release_cmd(const asn1::ngap_nr::ue_context_release_cmd_s& msg); bool handle_ue_context_release_cmd(const asn1::ngap::ue_context_release_cmd_s& msg);
// TS 38.413 - Section 9.2.1.1 - PDU Session Resource Setup Request // TS 38.413 - Section 9.2.1.1 - PDU Session Resource Setup Request
bool handle_pdu_session_res_setup_request(const asn1::ngap_nr::pdu_session_res_setup_request_s& msg); bool handle_pdu_session_res_setup_request(const asn1::ngap::pdu_session_res_setup_request_s& msg);
/// Checks if a UE Context Release Request was already sent /// Checks if a UE Context Release Request was already sent
bool was_ue_context_release_requested() const { return release_requested; } bool was_ue_context_release_requested() const { return release_requested; }

@ -35,10 +35,10 @@ public:
asn1::bounded_bitstring<1, 160, true, true> address_out; asn1::bounded_bitstring<1, 160, true, true> address_out;
asn1::bounded_bitstring<1, 160, true, true> address_in; asn1::bounded_bitstring<1, 160, true, true> address_in;
}; };
uint8_t id = 0; uint8_t id = 0;
uint8_t lcid = 0; uint8_t lcid = 0;
asn1::ngap_nr::qos_flow_level_qos_params_s qos_params; asn1::ngap::qos_flow_level_qos_params_s qos_params;
std::vector<gtpu_tunnel> tunnels; std::vector<gtpu_tunnel> tunnels;
}; };
ngap_ue_bearer_manager(gtpu_interface_rrc* gtpu_, srslog::basic_logger& logger_); ngap_ue_bearer_manager(gtpu_interface_rrc* gtpu_, srslog::basic_logger& logger_);
@ -46,13 +46,13 @@ public:
int add_pdu_session(uint16_t rnti, int add_pdu_session(uint16_t rnti,
uint8_t pdu_session_id, uint8_t pdu_session_id,
const asn1::ngap_nr::qos_flow_level_qos_params_s& qos, const asn1::ngap::qos_flow_level_qos_params_s& qos,
const asn1::bounded_bitstring<1, 160, true, true>& addr, const asn1::bounded_bitstring<1, 160, true, true>& addr,
uint32_t teid_out, uint32_t teid_out,
uint16_t& lcid, uint16_t& lcid,
asn1::bounded_bitstring<1, 160, true, true>& addr_in, asn1::bounded_bitstring<1, 160, true, true>& addr_in,
uint32_t& teid_in, uint32_t& teid_in,
asn1::ngap_nr::cause_c& cause); asn1::ngap::cause_c& cause);
int reset_pdu_sessions(uint16_t rnti); int reset_pdu_sessions(uint16_t rnti);

@ -38,7 +38,7 @@ public:
rrc_interface_ngap_nr* rrc_, rrc_interface_ngap_nr* rrc_,
ngap_ue_ctxt_t* ue_ctxt, ngap_ue_ctxt_t* ue_ctxt,
srslog::basic_logger& logger_); srslog::basic_logger& logger_);
srsran::proc_outcome_t init(const asn1::ngap_nr::init_context_setup_request_s& msg); srsran::proc_outcome_t init(const asn1::ngap::init_context_setup_request_s& msg);
srsran::proc_outcome_t react(const bool rrc_reconf_outcome); srsran::proc_outcome_t react(const bool rrc_reconf_outcome);
srsran::proc_outcome_t step(); srsran::proc_outcome_t step();
static const char* name() { return "Initial Context Setup"; } static const char* name() { return "Initial Context Setup"; }
@ -59,7 +59,7 @@ public:
ngap_ue_ctxt_t* ue_ctxt, ngap_ue_ctxt_t* ue_ctxt,
ngap_ue_bearer_manager* bearer_manager, ngap_ue_bearer_manager* bearer_manager,
srslog::basic_logger& logger_); srslog::basic_logger& logger_);
srsran::proc_outcome_t init(const asn1::ngap_nr::ue_context_release_cmd_s& msg); srsran::proc_outcome_t init(const asn1::ngap::ue_context_release_cmd_s& msg);
srsran::proc_outcome_t step(); srsran::proc_outcome_t step();
static const char* name() { return "UE Context Release"; } static const char* name() { return "UE Context Release"; }
@ -92,7 +92,7 @@ public:
ngap_ue_ctxt_t* ue_ctxt, ngap_ue_ctxt_t* ue_ctxt,
ngap_ue_bearer_manager* bearer_manager, ngap_ue_bearer_manager* bearer_manager,
srslog::basic_logger& logger_); srslog::basic_logger& logger_);
srsran::proc_outcome_t init(const asn1::ngap_nr::pdu_session_res_setup_request_s& msg); srsran::proc_outcome_t init(const asn1::ngap::pdu_session_res_setup_request_s& msg);
srsran::proc_outcome_t step(); srsran::proc_outcome_t step();
static const char* name() { return "UE PDU Session Resource Setup"; } static const char* name() { return "UE PDU Session Resource Setup"; }

@ -94,8 +94,8 @@ public:
// Interfaces for NGAP // Interfaces for NGAP
int ue_set_security_cfg_key(uint16_t rnti, const asn1::fixed_bitstring<256, false, true>& key) final; int ue_set_security_cfg_key(uint16_t rnti, const asn1::fixed_bitstring<256, false, true>& key) final;
int ue_set_bitrates(uint16_t rnti, const asn1::ngap_nr::ue_aggregate_maximum_bit_rate_s& rates) final; int ue_set_bitrates(uint16_t rnti, const asn1::ngap::ue_aggregate_maximum_bit_rate_s& rates) final;
int ue_set_security_cfg_capabilities(uint16_t rnti, const asn1::ngap_nr::ue_security_cap_s& caps) final; int ue_set_security_cfg_capabilities(uint16_t rnti, const asn1::ngap::ue_security_cap_s& caps) final;
int start_security_mode_procedure(uint16_t rnti, srsran::unique_byte_buffer_t nas_pdu) final; int start_security_mode_procedure(uint16_t rnti, srsran::unique_byte_buffer_t nas_pdu) final;
int establish_rrc_bearer(uint16_t rnti, int establish_rrc_bearer(uint16_t rnti,
uint16_t pdu_session_id, uint16_t pdu_session_id,
@ -104,7 +104,7 @@ public:
int release_bearers(uint16_t rnti) final; int release_bearers(uint16_t rnti) final;
void release_user(uint16_t rnti) final; void release_user(uint16_t rnti) final;
void write_dl_info(uint16_t rnti, srsran::unique_byte_buffer_t sdu) final; void write_dl_info(uint16_t rnti, srsran::unique_byte_buffer_t sdu) final;
int set_aggregate_max_bitrate(uint16_t rnti, const asn1::ngap_nr::ue_aggregate_maximum_bit_rate_s& rates) final; int set_aggregate_max_bitrate(uint16_t rnti, const asn1::ngap::ue_aggregate_maximum_bit_rate_s& rates) final;
int allocate_lcid(uint16_t rnti) final; int allocate_lcid(uint16_t rnti) final;
// logging // logging

@ -46,7 +46,7 @@ public:
return *this; return *this;
} }
bool set_security_capabilities(const asn1::ngap_nr::ue_security_cap_s& caps); bool set_security_capabilities(const asn1::ngap::ue_security_cap_s& caps);
void set_security_key(const asn1::fixed_bitstring<256, false, true>& key); void set_security_key(const asn1::fixed_bitstring<256, false, true>& key);
void set_ncc(uint8_t ncc_) { ncc = ncc_; } void set_ncc(uint8_t ncc_) { ncc = ncc_; }
@ -60,13 +60,13 @@ public:
private: private:
void generate_as_keys(); void generate_as_keys();
srslog::basic_logger& logger; srslog::basic_logger& logger;
const srsenb::rrc_nr_cfg_t& cfg; const srsenb::rrc_nr_cfg_t& cfg;
bool k_gnb_present = false; bool k_gnb_present = false;
asn1::ngap_nr::ue_security_cap_s security_capabilities = {}; asn1::ngap::ue_security_cap_s security_capabilities = {};
uint8_t k_gnb[32] = {}; // Provided by MME uint8_t k_gnb[32] = {}; // Provided by MME
srsran::nr_as_security_config_t sec_cfg = {}; srsran::nr_as_security_config_t sec_cfg = {};
uint8_t ncc = 0; uint8_t ncc = 0;
}; };
} // namespace srsgnb } // namespace srsgnb
#endif #endif

@ -45,10 +45,7 @@ public:
// setters // setters
void set_security_key(const asn1::fixed_bitstring<256, false, true>& key) { sec_ctx.set_security_key(key); } void set_security_key(const asn1::fixed_bitstring<256, false, true>& key) { sec_ctx.set_security_key(key); }
void set_security_capabilities(const asn1::ngap_nr::ue_security_cap_s& caps) void set_security_capabilities(const asn1::ngap::ue_security_cap_s& caps) { sec_ctx.set_security_capabilities(caps); }
{
sec_ctx.set_security_capabilities(caps);
}
void deactivate_bearers(); void deactivate_bearers();

@ -28,7 +28,7 @@ using srsran::uint32_to_uint8;
} \ } \
} while (0) } while (0)
using namespace asn1::ngap_nr; using namespace asn1::ngap;
namespace srsenb { namespace srsenb {
/********************************************************* /*********************************************************
@ -211,10 +211,10 @@ int ngap::build_tai_cgi()
/******************************************************************************* /*******************************************************************************
/* RRC interface /* RRC interface
********************************************************************************/ ********************************************************************************/
void ngap::initial_ue(uint16_t rnti, void ngap::initial_ue(uint16_t rnti,
uint32_t gnb_cc_idx, uint32_t gnb_cc_idx,
asn1::ngap_nr::rrcestablishment_cause_e cause, asn1::ngap::rrcestablishment_cause_e cause,
srsran::const_byte_span pdu) srsran::const_byte_span pdu)
{ {
std::unique_ptr<ue> ue_ptr{new ue{this, rrc, gtpu, logger}}; std::unique_ptr<ue> ue_ptr{new ue{this, rrc, gtpu, logger}};
ue_ptr->ctxt.rnti = rnti; ue_ptr->ctxt.rnti = rnti;
@ -227,11 +227,11 @@ void ngap::initial_ue(uint16_t rnti,
u->send_initial_ue_message(cause, pdu, false); u->send_initial_ue_message(cause, pdu, false);
} }
void ngap::initial_ue(uint16_t rnti, void ngap::initial_ue(uint16_t rnti,
uint32_t gnb_cc_idx, uint32_t gnb_cc_idx,
asn1::ngap_nr::rrcestablishment_cause_e cause, asn1::ngap::rrcestablishment_cause_e cause,
srsran::const_byte_span pdu, srsran::const_byte_span pdu,
uint32_t s_tmsi) uint32_t s_tmsi)
{ {
std::unique_ptr<ue> ue_ptr{new ue{this, rrc, gtpu, logger}}; std::unique_ptr<ue> ue_ptr{new ue{this, rrc, gtpu, logger}};
ue_ptr->ctxt.rnti = rnti; ue_ptr->ctxt.rnti = rnti;
@ -265,7 +265,7 @@ void ngap::write_pdu(uint16_t rnti, srsran::const_byte_span pdu)
u->send_ul_nas_transport(pdu); u->send_ul_nas_transport(pdu);
} }
void ngap::user_release_request(uint16_t rnti, asn1::ngap_nr::cause_radio_network_e cause_radio) void ngap::user_release_request(uint16_t rnti, asn1::ngap::cause_radio_network_e cause_radio)
{ {
ue* u = users.find_ue_rnti(rnti); ue* u = users.find_ue_rnti(rnti);
if (u == nullptr) { if (u == nullptr) {
@ -424,7 +424,7 @@ bool ngap::handle_ngap_rx_pdu(srsran::byte_buffer_t* pdu)
return true; return true;
} }
bool ngap::handle_initiating_message(const asn1::ngap_nr::init_msg_s& msg) bool ngap::handle_initiating_message(const asn1::ngap::init_msg_s& msg)
{ {
switch (msg.value.type().value) { switch (msg.value.type().value) {
case ngap_elem_procs_o::init_msg_c::types_opts::dl_nas_transport: case ngap_elem_procs_o::init_msg_c::types_opts::dl_nas_transport:
@ -452,7 +452,7 @@ bool ngap::handle_successful_outcome(const successful_outcome_s& msg)
return true; return true;
} }
bool ngap::handle_unsuccessful_outcome(const asn1::ngap_nr::unsuccessful_outcome_s& msg) bool ngap::handle_unsuccessful_outcome(const asn1::ngap::unsuccessful_outcome_s& msg)
{ {
switch (msg.value.type().value) { switch (msg.value.type().value) {
case ngap_elem_procs_o::unsuccessful_outcome_c::types_opts::ng_setup_fail: case ngap_elem_procs_o::unsuccessful_outcome_c::types_opts::ng_setup_fail:
@ -463,7 +463,7 @@ bool ngap::handle_unsuccessful_outcome(const asn1::ngap_nr::unsuccessful_outcome
return true; return true;
} }
bool ngap::handle_ng_setup_response(const asn1::ngap_nr::ng_setup_resp_s& msg) bool ngap::handle_ng_setup_response(const asn1::ngap::ng_setup_resp_s& msg)
{ {
ngsetupresponse = msg; ngsetupresponse = msg;
amf_connected = true; amf_connected = true;
@ -475,7 +475,7 @@ bool ngap::handle_ng_setup_response(const asn1::ngap_nr::ng_setup_resp_s& msg)
return true; return true;
} }
bool ngap::handle_ng_setup_failure(const asn1::ngap_nr::ng_setup_fail_s& msg) bool ngap::handle_ng_setup_failure(const asn1::ngap::ng_setup_fail_s& msg)
{ {
std::string cause = get_cause(msg.protocol_ies.cause.value); std::string cause = get_cause(msg.protocol_ies.cause.value);
logger.error("NG Setup Failure. Cause: %s", cause.c_str()); logger.error("NG Setup Failure. Cause: %s", cause.c_str());
@ -483,7 +483,7 @@ bool ngap::handle_ng_setup_failure(const asn1::ngap_nr::ng_setup_fail_s& msg)
return true; return true;
} }
bool ngap::handle_dl_nas_transport(const asn1::ngap_nr::dl_nas_transport_s& msg) bool ngap::handle_dl_nas_transport(const asn1::ngap::dl_nas_transport_s& msg)
{ {
if (msg.ext) { if (msg.ext) {
logger.warning("Not handling NGAP message extension"); logger.warning("Not handling NGAP message extension");
@ -533,7 +533,7 @@ bool ngap::handle_dl_nas_transport(const asn1::ngap_nr::dl_nas_transport_s& msg)
return true; return true;
} }
bool ngap::handle_initial_ctxt_setup_request(const asn1::ngap_nr::init_context_setup_request_s& msg) bool ngap::handle_initial_ctxt_setup_request(const asn1::ngap::init_context_setup_request_s& msg)
{ {
ue* u = ue* u =
handle_ngapmsg_ue_id(msg.protocol_ies.ran_ue_ngap_id.value.value, msg.protocol_ies.amf_ue_ngap_id.value.value); handle_ngapmsg_ue_id(msg.protocol_ies.ran_ue_ngap_id.value.value, msg.protocol_ies.amf_ue_ngap_id.value.value);
@ -547,9 +547,9 @@ bool ngap::handle_initial_ctxt_setup_request(const asn1::ngap_nr::init_context_s
return true; return true;
} }
bool ngap::handle_ue_context_release_cmd(const asn1::ngap_nr::ue_context_release_cmd_s& msg) bool ngap::handle_ue_context_release_cmd(const asn1::ngap::ue_context_release_cmd_s& msg)
{ {
const asn1::ngap_nr::ue_ngap_id_pair_s& ue_ngap_id_pair = msg.protocol_ies.ue_ngap_ids.value.ue_ngap_id_pair(); const asn1::ngap::ue_ngap_id_pair_s& ue_ngap_id_pair = msg.protocol_ies.ue_ngap_ids.value.ue_ngap_id_pair();
ue* u = handle_ngapmsg_ue_id(ue_ngap_id_pair.ran_ue_ngap_id, ue_ngap_id_pair.amf_ue_ngap_id); ue* u = handle_ngapmsg_ue_id(ue_ngap_id_pair.ran_ue_ngap_id, ue_ngap_id_pair.amf_ue_ngap_id);
if (u == nullptr) { if (u == nullptr) {
@ -560,7 +560,7 @@ bool ngap::handle_ue_context_release_cmd(const asn1::ngap_nr::ue_context_release
return u->handle_ue_context_release_cmd(msg); return u->handle_ue_context_release_cmd(msg);
} }
bool ngap::handle_ue_pdu_session_res_setup_request(const asn1::ngap_nr::pdu_session_res_setup_request_s& msg) bool ngap::handle_ue_pdu_session_res_setup_request(const asn1::ngap::pdu_session_res_setup_request_s& msg)
{ {
ue* u = ue* u =
handle_ngapmsg_ue_id(msg.protocol_ies.ran_ue_ngap_id.value.value, msg.protocol_ies.amf_ue_ngap_id.value.value); handle_ngapmsg_ue_id(msg.protocol_ies.ran_ue_ngap_id.value.value, msg.protocol_ies.amf_ue_ngap_id.value.value);
@ -581,9 +581,9 @@ bool ngap::handle_ue_pdu_session_res_setup_request(const asn1::ngap_nr::pdu_sess
/* NGAP message senders /* NGAP message senders
********************************************************************************/ ********************************************************************************/
bool ngap::send_error_indication(const asn1::ngap_nr::cause_c& cause, bool ngap::send_error_indication(const asn1::ngap::cause_c& cause,
srsran::optional<uint32_t> ran_ue_ngap_id, srsran::optional<uint32_t> ran_ue_ngap_id,
srsran::optional<uint32_t> amf_ue_ngap_id) srsran::optional<uint32_t> amf_ue_ngap_id)
{ {
if (amf_connected == false) { if (amf_connected == false) {
logger.warning("AMF not connected."); logger.warning("AMF not connected.");
@ -591,7 +591,7 @@ bool ngap::send_error_indication(const asn1::ngap_nr::cause_c& cause,
} }
ngap_pdu_c tx_pdu; ngap_pdu_c tx_pdu;
tx_pdu.set_init_msg().load_info_obj(ASN1_NGAP_NR_ID_ERROR_IND); tx_pdu.set_init_msg().load_info_obj(ASN1_NGAP_ID_ERROR_IND);
auto& container = tx_pdu.init_msg().value.error_ind().protocol_ies; auto& container = tx_pdu.init_msg().value.error_ind().protocol_ies;
uint16_t rnti = SRSRAN_INVALID_RNTI; uint16_t rnti = SRSRAN_INVALID_RNTI;
@ -655,7 +655,7 @@ bool ngap::setup_ng()
plmn = htonl(plmn); plmn = htonl(plmn);
ngap_pdu_c pdu; ngap_pdu_c pdu;
pdu.set_init_msg().load_info_obj(ASN1_NGAP_NR_ID_NG_SETUP); pdu.set_init_msg().load_info_obj(ASN1_NGAP_ID_NG_SETUP);
ng_setup_request_ies_container& container = pdu.init_msg().value.ng_setup_request().protocol_ies; ng_setup_request_ies_container& container = pdu.init_msg().value.ng_setup_request().protocol_ies;
global_gnb_id_s& global_gnb_id = container.global_ran_node_id.value.set_global_gnb_id(); global_gnb_id_s& global_gnb_id = container.global_ran_node_id.value.set_global_gnb_id();
global_gnb_id.plmn_id = tai.plmn_id; global_gnb_id.plmn_id = tai.plmn_id;
@ -687,7 +687,7 @@ bool ngap::setup_ng()
container.supported_ta_list.value[0].broadcast_plmn_list[0].tai_slice_support_list.resize(1); container.supported_ta_list.value[0].broadcast_plmn_list[0].tai_slice_support_list.resize(1);
container.supported_ta_list.value[0].broadcast_plmn_list[0].tai_slice_support_list[0].s_nssai.sst.from_number(1); container.supported_ta_list.value[0].broadcast_plmn_list[0].tai_slice_support_list[0].s_nssai.sst.from_number(1);
container.default_paging_drx.value.value = asn1::ngap_nr::paging_drx_opts::v256; // Todo: add to args, config file container.default_paging_drx.value.value = asn1::ngap::paging_drx_opts::v256; // Todo: add to args, config file
return sctp_send_ngap_pdu(pdu, 0, "ngSetupRequest"); return sctp_send_ngap_pdu(pdu, 0, "ngSetupRequest");
} }
@ -696,7 +696,7 @@ bool ngap::setup_ng()
/* General helpers /* General helpers
********************************************************************************/ ********************************************************************************/
bool ngap::sctp_send_ngap_pdu(const asn1::ngap_nr::ngap_pdu_c& tx_pdu, uint32_t rnti, const char* procedure_name) bool ngap::sctp_send_ngap_pdu(const asn1::ngap::ngap_pdu_c& tx_pdu, uint32_t rnti, const char* procedure_name)
{ {
if (not amf_connected and rnti != SRSRAN_INVALID_RNTI) { if (not amf_connected and rnti != SRSRAN_INVALID_RNTI) {
logger.error("Aborting %s for rnti=0x%x. Cause: AMF is not connected.", procedure_name, rnti); logger.error("Aborting %s for rnti=0x%x. Cause: AMF is not connected.", procedure_name, rnti);

@ -15,7 +15,7 @@
#include "srsgnb/hdr/stack/ngap/ngap_ue_proc.h" #include "srsgnb/hdr/stack/ngap/ngap_ue_proc.h"
#include "srsran/common/int_helpers.h" #include "srsran/common/int_helpers.h"
using namespace asn1::ngap_nr; using namespace asn1::ngap;
namespace srsenb { namespace srsenb {
@ -45,10 +45,10 @@ ngap::ue::~ue() {}
/* NGAP message senders /* NGAP message senders
********************************************************************************/ ********************************************************************************/
bool ngap::ue::send_initial_ue_message(asn1::ngap_nr::rrcestablishment_cause_e cause, bool ngap::ue::send_initial_ue_message(asn1::ngap::rrcestablishment_cause_e cause,
srsran::const_byte_span pdu, srsran::const_byte_span pdu,
bool has_tmsi, bool has_tmsi,
uint32_t s_tmsi) uint32_t s_tmsi)
{ {
if (not ngap_ptr->amf_connected) { if (not ngap_ptr->amf_connected) {
logger.warning("AMF not connected"); logger.warning("AMF not connected");
@ -56,7 +56,7 @@ bool ngap::ue::send_initial_ue_message(asn1::ngap_nr::rrcestablishment_cause_e c
} }
ngap_pdu_c tx_pdu; ngap_pdu_c tx_pdu;
tx_pdu.set_init_msg().load_info_obj(ASN1_NGAP_NR_ID_INIT_UE_MSG); tx_pdu.set_init_msg().load_info_obj(ASN1_NGAP_ID_INIT_UE_MSG);
init_ue_msg_ies_container& container = tx_pdu.init_msg().value.init_ue_msg().protocol_ies; init_ue_msg_ies_container& container = tx_pdu.init_msg().value.init_ue_msg().protocol_ies;
// 5G-S-TMSI // 5G-S-TMSI
@ -88,7 +88,7 @@ bool ngap::ue::send_initial_ue_message(asn1::ngap_nr::rrcestablishment_cause_e c
// UE context request for setup in the NAS registration request // UE context request for setup in the NAS registration request
container.ue_context_request_present = true; container.ue_context_request_present = true;
container.ue_context_request.value = asn1::ngap_nr::ue_context_request_opts::options::requested; container.ue_context_request.value = asn1::ngap::ue_context_request_opts::options::requested;
return ngap_ptr->sctp_send_ngap_pdu(tx_pdu, ctxt.rnti, "InitialUEMessage"); return ngap_ptr->sctp_send_ngap_pdu(tx_pdu, ctxt.rnti, "InitialUEMessage");
} }
@ -101,8 +101,8 @@ bool ngap::ue::send_ul_nas_transport(srsran::const_byte_span pdu)
} }
ngap_pdu_c tx_pdu; ngap_pdu_c tx_pdu;
tx_pdu.set_init_msg().load_info_obj(ASN1_NGAP_NR_ID_UL_NAS_TRANSPORT); tx_pdu.set_init_msg().load_info_obj(ASN1_NGAP_ID_UL_NAS_TRANSPORT);
asn1::ngap_nr::ul_nas_transport_ies_container& container = tx_pdu.init_msg().value.ul_nas_transport().protocol_ies; asn1::ngap::ul_nas_transport_ies_container& container = tx_pdu.init_msg().value.ul_nas_transport().protocol_ies;
// AMF UE NGAP ID // AMF UE NGAP ID
if (ctxt.amf_ue_ngap_id.has_value()) { if (ctxt.amf_ue_ngap_id.has_value()) {
@ -143,7 +143,7 @@ bool ngap::ue::send_initial_ctxt_setup_response()
} }
ngap_pdu_c tx_pdu; ngap_pdu_c tx_pdu;
tx_pdu.set_successful_outcome().load_info_obj(ASN1_NGAP_NR_ID_INIT_CONTEXT_SETUP); tx_pdu.set_successful_outcome().load_info_obj(ASN1_NGAP_ID_INIT_CONTEXT_SETUP);
init_context_setup_resp_s& container = tx_pdu.successful_outcome().value.init_context_setup_resp(); init_context_setup_resp_s& container = tx_pdu.successful_outcome().value.init_context_setup_resp();
// AMF UE NGAP ID // AMF UE NGAP ID
@ -163,7 +163,7 @@ bool ngap::ue::send_initial_ctxt_setup_failure(cause_c cause)
} }
ngap_pdu_c tx_pdu; ngap_pdu_c tx_pdu;
tx_pdu.set_init_msg().load_info_obj(ASN1_NGAP_NR_ID_INIT_CONTEXT_SETUP); tx_pdu.set_init_msg().load_info_obj(ASN1_NGAP_ID_INIT_CONTEXT_SETUP);
init_context_setup_fail_s& container = tx_pdu.unsuccessful_outcome().value.init_context_setup_fail(); init_context_setup_fail_s& container = tx_pdu.unsuccessful_outcome().value.init_context_setup_fail();
// AMF UE NGAP ID // AMF UE NGAP ID
@ -191,7 +191,7 @@ bool ngap::ue::send_pdu_session_resource_setup_response(uint16_t
} }
// TODO: QOS Params // TODO: QOS Params
ngap_pdu_c tx_pdu; ngap_pdu_c tx_pdu;
tx_pdu.set_successful_outcome().load_info_obj(ASN1_NGAP_NR_ID_PDU_SESSION_RES_SETUP); tx_pdu.set_successful_outcome().load_info_obj(ASN1_NGAP_ID_PDU_SESSION_RES_SETUP);
pdu_session_res_setup_resp_s& container = tx_pdu.successful_outcome().value.pdu_session_res_setup_resp(); pdu_session_res_setup_resp_s& container = tx_pdu.successful_outcome().value.pdu_session_res_setup_resp();
container.protocol_ies.amf_ue_ngap_id.value = ctxt.amf_ue_ngap_id.value(); container.protocol_ies.amf_ue_ngap_id.value = ctxt.amf_ue_ngap_id.value();
container.protocol_ies.ran_ue_ngap_id.value = ctxt.ran_ue_ngap_id; container.protocol_ies.ran_ue_ngap_id.value = ctxt.ran_ue_ngap_id;
@ -205,8 +205,8 @@ bool ngap::ue::send_pdu_session_resource_setup_response(uint16_t
gtp_tunnel.gtp_teid.from_number(teid_in); gtp_tunnel.gtp_teid.from_number(teid_in);
gtp_tunnel.transport_layer_address = addr_in; gtp_tunnel.transport_layer_address = addr_in;
asn1::ngap_nr::associated_qos_flow_list_l qos_flow_list; asn1::ngap::associated_qos_flow_list_l qos_flow_list;
asn1::ngap_nr::associated_qos_flow_item_s qos_flow_item; asn1::ngap::associated_qos_flow_item_s qos_flow_item;
qos_flow_item.qos_flow_id = 1; qos_flow_item.qos_flow_id = 1;
qos_flow_list.push_back(qos_flow_item); qos_flow_list.push_back(qos_flow_item);
resp_transfer.dlqos_flow_per_tnl_info.associated_qos_flow_list = qos_flow_list; resp_transfer.dlqos_flow_per_tnl_info.associated_qos_flow_list = qos_flow_list;
@ -228,7 +228,7 @@ bool ngap::ue::send_ue_ctxt_release_complete()
} }
ngap_pdu_c tx_pdu; ngap_pdu_c tx_pdu;
tx_pdu.set_successful_outcome().load_info_obj(ASN1_NGAP_NR_ID_UE_CONTEXT_RELEASE); tx_pdu.set_successful_outcome().load_info_obj(ASN1_NGAP_ID_UE_CONTEXT_RELEASE);
ue_context_release_complete_s& container = tx_pdu.successful_outcome().value.ue_context_release_complete(); ue_context_release_complete_s& container = tx_pdu.successful_outcome().value.ue_context_release_complete();
// userLocationInformationNR // userLocationInformationNR
@ -244,7 +244,7 @@ bool ngap::ue::send_ue_ctxt_release_complete()
return ngap_ptr->sctp_send_ngap_pdu(tx_pdu, ctxt.rnti, "UEContextReleaseComplete"); return ngap_ptr->sctp_send_ngap_pdu(tx_pdu, ctxt.rnti, "UEContextReleaseComplete");
} }
bool ngap::ue::send_ue_context_release_request(asn1::ngap_nr::cause_c cause) bool ngap::ue::send_ue_context_release_request(asn1::ngap::cause_c cause)
{ {
if (not ngap_ptr->amf_connected) { if (not ngap_ptr->amf_connected) {
logger.warning("AMF not connected"); logger.warning("AMF not connected");
@ -258,7 +258,7 @@ bool ngap::ue::send_ue_context_release_request(asn1::ngap_nr::cause_c cause)
release_requested = true; release_requested = true;
ngap_pdu_c tx_pdu; ngap_pdu_c tx_pdu;
tx_pdu.set_init_msg().load_info_obj(ASN1_NGAP_NR_ID_UE_CONTEXT_RELEASE_REQUEST); tx_pdu.set_init_msg().load_info_obj(ASN1_NGAP_ID_UE_CONTEXT_RELEASE_REQUEST);
ue_context_release_request_s& container = tx_pdu.init_msg().value.ue_context_release_request(); ue_context_release_request_s& container = tx_pdu.init_msg().value.ue_context_release_request();
container.protocol_ies.cause.value = cause; container.protocol_ies.cause.value = cause;
@ -285,7 +285,7 @@ bool ngap::ue::send_ue_context_release_request(asn1::ngap_nr::cause_c cause)
/* NGAP message handler /* NGAP message handler
********************************************************************************/ ********************************************************************************/
bool ngap::ue::handle_initial_ctxt_setup_request(const asn1::ngap_nr::init_context_setup_request_s& msg) bool ngap::ue::handle_initial_ctxt_setup_request(const asn1::ngap::init_context_setup_request_s& msg)
{ {
if (not initial_context_setup_proc.launch(msg)) { if (not initial_context_setup_proc.launch(msg)) {
logger.error("Failed to start Initial Context Setup Procedure"); logger.error("Failed to start Initial Context Setup Procedure");
@ -294,7 +294,7 @@ bool ngap::ue::handle_initial_ctxt_setup_request(const asn1::ngap_nr::init_conte
return true; return true;
} }
bool ngap::ue::handle_ue_context_release_cmd(const asn1::ngap_nr::ue_context_release_cmd_s& msg) bool ngap::ue::handle_ue_context_release_cmd(const asn1::ngap::ue_context_release_cmd_s& msg)
{ {
// TODO: Release UE context // TODO: Release UE context
if (not ue_context_release_proc.launch(msg)) { if (not ue_context_release_proc.launch(msg)) {
@ -304,7 +304,7 @@ bool ngap::ue::handle_ue_context_release_cmd(const asn1::ngap_nr::ue_context_rel
return true; return true;
} }
bool ngap::ue::handle_pdu_session_res_setup_request(const asn1::ngap_nr::pdu_session_res_setup_request_s& msg) bool ngap::ue::handle_pdu_session_res_setup_request(const asn1::ngap::pdu_session_res_setup_request_s& msg)
{ {
if (not ue_pdu_session_res_setup_proc.launch(msg)) { if (not ue_pdu_session_res_setup_proc.launch(msg)) {
logger.error("Failed to start UE PDU Session Resource Setup Procedure"); logger.error("Failed to start UE PDU Session Resource Setup Procedure");

@ -20,20 +20,20 @@ ngap_ue_bearer_manager::~ngap_ue_bearer_manager(){};
int ngap_ue_bearer_manager::add_pdu_session(uint16_t rnti, int ngap_ue_bearer_manager::add_pdu_session(uint16_t rnti,
uint8_t pdu_session_id, uint8_t pdu_session_id,
const asn1::ngap_nr::qos_flow_level_qos_params_s& qos, const asn1::ngap::qos_flow_level_qos_params_s& qos,
const asn1::bounded_bitstring<1, 160, true, true>& addr_out, const asn1::bounded_bitstring<1, 160, true, true>& addr_out,
uint32_t teid_out, uint32_t teid_out,
uint16_t& lcid, uint16_t& lcid,
asn1::bounded_bitstring<1, 160, true, true>& addr_in, asn1::bounded_bitstring<1, 160, true, true>& addr_in,
uint32_t& teid_in, uint32_t& teid_in,
asn1::ngap_nr::cause_c& cause) asn1::ngap::cause_c& cause)
{ {
// Only add session if gtpu was successful // Only add session if gtpu was successful
pdu_session_t::gtpu_tunnel tunnel; pdu_session_t::gtpu_tunnel tunnel;
if (addr_out.length() > 32) { if (addr_out.length() > 32) {
logger.error("Only addresses with length <= 32 (IPv4) are supported"); logger.error("Only addresses with length <= 32 (IPv4) are supported");
cause.set_radio_network().value = asn1::ngap_nr::cause_radio_network_opts::invalid_qos_combination; cause.set_radio_network().value = asn1::ngap::cause_radio_network_opts::invalid_qos_combination;
return SRSRAN_ERROR; return SRSRAN_ERROR;
} }

@ -22,7 +22,7 @@ ngap_ue_initial_context_setup_proc::ngap_ue_initial_context_setup_proc(ngap_inte
srslog::basic_logger& logger_) : srslog::basic_logger& logger_) :
logger(logger_), parent(parent_), rrc(rrc_), ue_ctxt(ue_ctxt_){}; logger(logger_), parent(parent_), rrc(rrc_), ue_ctxt(ue_ctxt_){};
proc_outcome_t ngap_ue_initial_context_setup_proc::init(const asn1::ngap_nr::init_context_setup_request_s& msg) proc_outcome_t ngap_ue_initial_context_setup_proc::init(const asn1::ngap::init_context_setup_request_s& msg)
{ {
ue_ctxt->amf_pointer = msg.protocol_ies.guami.value.amf_pointer.to_number(); ue_ctxt->amf_pointer = msg.protocol_ies.guami.value.amf_pointer.to_number();
ue_ctxt->amf_set_id = msg.protocol_ies.guami.value.amf_set_id.to_number(); ue_ctxt->amf_set_id = msg.protocol_ies.guami.value.amf_set_id.to_number();
@ -78,7 +78,7 @@ ngap_ue_ue_context_release_proc::ngap_ue_ue_context_release_proc(ngap_interface_
bearer_manager = bearer_manager_; bearer_manager = bearer_manager_;
}; };
proc_outcome_t ngap_ue_ue_context_release_proc::init(const asn1::ngap_nr::ue_context_release_cmd_s& msg) proc_outcome_t ngap_ue_ue_context_release_proc::init(const asn1::ngap::ue_context_release_cmd_s& msg)
{ {
logger.info("Started %s", name()); logger.info("Started %s", name());
bearer_manager->reset_pdu_sessions(ue_ctxt->rnti); bearer_manager->reset_pdu_sessions(ue_ctxt->rnti);
@ -100,20 +100,19 @@ ngap_ue_pdu_session_res_setup_proc::ngap_ue_pdu_session_res_setup_proc(ngap_inte
parent(parent_), rrc(rrc_), ue_ctxt(ue_ctxt_), bearer_manager(bearer_manager_), logger(logger_) parent(parent_), rrc(rrc_), ue_ctxt(ue_ctxt_), bearer_manager(bearer_manager_), logger(logger_)
{} {}
proc_outcome_t ngap_ue_pdu_session_res_setup_proc::init(const asn1::ngap_nr::pdu_session_res_setup_request_s& msg) proc_outcome_t ngap_ue_pdu_session_res_setup_proc::init(const asn1::ngap::pdu_session_res_setup_request_s& msg)
{ {
if (msg.protocol_ies.pdu_session_res_setup_list_su_req.value.size() != 1) { if (msg.protocol_ies.pdu_session_res_setup_list_su_req.value.size() != 1) {
logger.error("Not handling zero or multiple su requests"); logger.error("Not handling zero or multiple su requests");
return proc_outcome_t::error; return proc_outcome_t::error;
} }
asn1::ngap_nr::pdu_session_res_setup_item_su_req_s su_req = asn1::ngap::pdu_session_res_setup_item_su_req_s su_req = msg.protocol_ies.pdu_session_res_setup_list_su_req.value[0];
msg.protocol_ies.pdu_session_res_setup_list_su_req.value[0];
asn1::cbit_ref pdu_session_bref(su_req.pdu_session_res_setup_request_transfer.data(), asn1::cbit_ref pdu_session_bref(su_req.pdu_session_res_setup_request_transfer.data(),
su_req.pdu_session_res_setup_request_transfer.size()); su_req.pdu_session_res_setup_request_transfer.size());
asn1::ngap_nr::pdu_session_res_setup_request_transfer_s pdu_ses_res_setup_req_trans; asn1::ngap::pdu_session_res_setup_request_transfer_s pdu_ses_res_setup_req_trans;
if (pdu_ses_res_setup_req_trans.unpack(pdu_session_bref) != SRSRAN_SUCCESS) { if (pdu_ses_res_setup_req_trans.unpack(pdu_session_bref) != SRSRAN_SUCCESS) {
logger.error("Unable to unpack PDU session response setup request"); logger.error("Unable to unpack PDU session response setup request");
@ -126,11 +125,11 @@ proc_outcome_t ngap_ue_pdu_session_res_setup_proc::init(const asn1::ngap_nr::pdu
} }
if (pdu_ses_res_setup_req_trans.protocol_ies.ul_ngu_up_tnl_info.value.type() != if (pdu_ses_res_setup_req_trans.protocol_ies.ul_ngu_up_tnl_info.value.type() !=
asn1::ngap_nr::up_transport_layer_info_c::types::gtp_tunnel) { asn1::ngap::up_transport_layer_info_c::types::gtp_tunnel) {
logger.error("Expected GTP Tunnel"); logger.error("Expected GTP Tunnel");
return proc_outcome_t::error; return proc_outcome_t::error;
} }
asn1::ngap_nr::qos_flow_setup_request_item_s qos_flow_setup = asn1::ngap::qos_flow_setup_request_item_s qos_flow_setup =
pdu_ses_res_setup_req_trans.protocol_ies.qos_flow_setup_request_list.value[0]; pdu_ses_res_setup_req_trans.protocol_ies.qos_flow_setup_request_list.value[0];
srsran::const_span<uint8_t> nas_pdu_dummy; srsran::const_span<uint8_t> nas_pdu_dummy;
uint32_t teid_out = 0; uint32_t teid_out = 0;
@ -141,7 +140,7 @@ proc_outcome_t ngap_ue_pdu_session_res_setup_proc::init(const asn1::ngap_nr::pdu
teid_out |= pdu_ses_res_setup_req_trans.protocol_ies.ul_ngu_up_tnl_info.value.gtp_tunnel().gtp_teid[3]; teid_out |= pdu_ses_res_setup_req_trans.protocol_ies.ul_ngu_up_tnl_info.value.gtp_tunnel().gtp_teid[3];
// TODO: Check cause // TODO: Check cause
asn1::ngap_nr::cause_c cause; asn1::ngap::cause_c cause;
uint32_t teid_in = {}; uint32_t teid_in = {};
uint16_t lcid = {}; uint16_t lcid = {};
asn1::bounded_bitstring<1, 160, true, true> addr_in; asn1::bounded_bitstring<1, 160, true, true> addr_in;

@ -74,17 +74,17 @@ public:
rrc_logger.info(sec_key, 32, "Security key"); rrc_logger.info(sec_key, 32, "Security key");
return SRSRAN_SUCCESS; return SRSRAN_SUCCESS;
} }
int ue_set_bitrates(uint16_t rnti, const asn1::ngap_nr::ue_aggregate_maximum_bit_rate_s& rates) int ue_set_bitrates(uint16_t rnti, const asn1::ngap::ue_aggregate_maximum_bit_rate_s& rates)
{ {
rrc_logger.info("Setting aggregate max bitrate. RNTI 0x%x", rnti); rrc_logger.info("Setting aggregate max bitrate. RNTI 0x%x", rnti);
return SRSRAN_SUCCESS; return SRSRAN_SUCCESS;
} }
int set_aggregate_max_bitrate(uint16_t rnti, const asn1::ngap_nr::ue_aggregate_maximum_bit_rate_s& rates) int set_aggregate_max_bitrate(uint16_t rnti, const asn1::ngap::ue_aggregate_maximum_bit_rate_s& rates)
{ {
rrc_logger.info("Setting aggregate max bitrate"); rrc_logger.info("Setting aggregate max bitrate");
return SRSRAN_SUCCESS; return SRSRAN_SUCCESS;
} }
int ue_set_security_cfg_capabilities(uint16_t rnti, const asn1::ngap_nr::ue_security_cap_s& caps) int ue_set_security_cfg_capabilities(uint16_t rnti, const asn1::ngap::ue_security_cap_s& caps)
{ {
rrc_logger.info("Setting security capabilities"); rrc_logger.info("Setting security capabilities");
for (uint8_t i = 0; i < 8; i++) { for (uint8_t i = 0; i < 8; i++) {
@ -119,10 +119,10 @@ public:
int allocate_lcid(uint16_t rnti) { return SRSRAN_SUCCESS; } int allocate_lcid(uint16_t rnti) { return SRSRAN_SUCCESS; }
void write_dl_info(uint16_t rnti, srsran::unique_byte_buffer_t sdu) {} void write_dl_info(uint16_t rnti, srsran::unique_byte_buffer_t sdu) {}
bool sec_mod_proc_started = false; bool sec_mod_proc_started = false;
uint8_t sec_key[32] = {}; uint8_t sec_key[32] = {};
asn1::ngap_nr::ue_security_cap_s sec_caps = {}; asn1::ngap::ue_security_cap_s sec_caps = {};
srslog::basic_logger& rrc_logger; srslog::basic_logger& rrc_logger;
}; };
struct dummy_socket_manager : public srsran::socket_manager_itf { struct dummy_socket_manager : public srsran::socket_manager_itf {
dummy_socket_manager() : srsran::socket_manager_itf(srslog::fetch_basic_logger("TEST")) {} dummy_socket_manager() : srsran::socket_manager_itf(srslog::fetch_basic_logger("TEST")) {}
@ -154,15 +154,15 @@ struct dummy_socket_manager : public srsran::socket_manager_itf {
void run_ng_setup(ngap& ngap_obj, amf_dummy& amf) void run_ng_setup(ngap& ngap_obj, amf_dummy& amf)
{ {
asn1::ngap_nr::ngap_pdu_c ngap_pdu; asn1::ngap::ngap_pdu_c ngap_pdu;
// gNB -> AMF: NG Setup Request // gNB -> AMF: NG Setup Request
srsran::unique_byte_buffer_t sdu = amf.read_msg(); srsran::unique_byte_buffer_t sdu = amf.read_msg();
TESTASSERT(sdu->N_bytes > 0); TESTASSERT(sdu->N_bytes > 0);
asn1::cbit_ref cbref(sdu->msg, sdu->N_bytes); asn1::cbit_ref cbref(sdu->msg, sdu->N_bytes);
TESTASSERT(ngap_pdu.unpack(cbref) == asn1::SRSASN_SUCCESS); TESTASSERT(ngap_pdu.unpack(cbref) == asn1::SRSASN_SUCCESS);
TESTASSERT(ngap_pdu.type().value == asn1::ngap_nr::ngap_pdu_c::types_opts::init_msg); TESTASSERT(ngap_pdu.type().value == asn1::ngap::ngap_pdu_c::types_opts::init_msg);
TESTASSERT(ngap_pdu.init_msg().proc_code == ASN1_NGAP_NR_ID_NG_SETUP); TESTASSERT(ngap_pdu.init_msg().proc_code == ASN1_NGAP_ID_NG_SETUP);
// AMF -> gNB: ng Setup Response // AMF -> gNB: ng Setup Response
sockaddr_in amf_addr = {}; sockaddr_in amf_addr = {};
@ -191,24 +191,24 @@ void run_ng_initial_ue(ngap& ngap_obj, amf_dummy& amf, rrc_nr_dummy& rrc)
nas_pdu->N_bytes = sizeof(nas_reg_req); nas_pdu->N_bytes = sizeof(nas_reg_req);
uint32_t rnti = 0xf0f0; uint32_t rnti = 0xf0f0;
ngap_obj.initial_ue(rnti, 0, asn1::ngap_nr::rrcestablishment_cause_opts::mo_sig, srsran::make_span(nas_pdu)); ngap_obj.initial_ue(rnti, 0, asn1::ngap::rrcestablishment_cause_opts::mo_sig, srsran::make_span(nas_pdu));
// gNB -> AMF: Inital UE message // gNB -> AMF: Inital UE message
asn1::ngap_nr::ngap_pdu_c ngap_initial_ue_pdu; asn1::ngap::ngap_pdu_c ngap_initial_ue_pdu;
srsran::unique_byte_buffer_t sdu = amf.read_msg(); srsran::unique_byte_buffer_t sdu = amf.read_msg();
TESTASSERT(sdu->N_bytes > 0); TESTASSERT(sdu->N_bytes > 0);
asn1::cbit_ref cbref(sdu->msg, sdu->N_bytes); asn1::cbit_ref cbref(sdu->msg, sdu->N_bytes);
TESTASSERT_EQ(ngap_initial_ue_pdu.unpack(cbref), asn1::SRSASN_SUCCESS); TESTASSERT_EQ(ngap_initial_ue_pdu.unpack(cbref), asn1::SRSASN_SUCCESS);
TESTASSERT_EQ(ngap_initial_ue_pdu.type().value, asn1::ngap_nr::ngap_pdu_c::types_opts::init_msg); TESTASSERT_EQ(ngap_initial_ue_pdu.type().value, asn1::ngap::ngap_pdu_c::types_opts::init_msg);
TESTASSERT_EQ(ngap_initial_ue_pdu.init_msg().proc_code, ASN1_NGAP_NR_ID_INIT_UE_MSG); TESTASSERT_EQ(ngap_initial_ue_pdu.init_msg().proc_code, ASN1_NGAP_ID_INIT_UE_MSG);
// AMF -> gNB: Initial Context Setup Request // AMF -> gNB: Initial Context Setup Request
sockaddr_in amf_addr = {}; sockaddr_in amf_addr = {};
sctp_sndrcvinfo rcvinfo = {}; sctp_sndrcvinfo rcvinfo = {};
int flags = 0; int flags = 0;
asn1::ngap_nr::ngap_pdu_c ngap_initial_ctx_req_pdu; asn1::ngap::ngap_pdu_c ngap_initial_ctx_req_pdu;
ngap_initial_ctx_req_pdu.set_init_msg().load_info_obj(ASN1_NGAP_NR_ID_INIT_CONTEXT_SETUP); ngap_initial_ctx_req_pdu.set_init_msg().load_info_obj(ASN1_NGAP_ID_INIT_CONTEXT_SETUP);
auto& container = ngap_initial_ctx_req_pdu.init_msg().value.init_context_setup_request().protocol_ies; auto& container = ngap_initial_ctx_req_pdu.init_msg().value.init_context_setup_request().protocol_ies;
container.amf_ue_ngap_id.value = 0x1; container.amf_ue_ngap_id.value = 0x1;

@ -579,15 +579,15 @@ int rrc_nr::ue_set_security_cfg_key(uint16_t rnti, const asn1::fixed_bitstring<2
u.set_security_key(key); u.set_security_key(key);
return SRSRAN_SUCCESS; return SRSRAN_SUCCESS;
} }
int rrc_nr::ue_set_bitrates(uint16_t rnti, const asn1::ngap_nr::ue_aggregate_maximum_bit_rate_s& rates) int rrc_nr::ue_set_bitrates(uint16_t rnti, const asn1::ngap::ue_aggregate_maximum_bit_rate_s& rates)
{ {
return SRSRAN_SUCCESS; return SRSRAN_SUCCESS;
} }
int rrc_nr::set_aggregate_max_bitrate(uint16_t rnti, const asn1::ngap_nr::ue_aggregate_maximum_bit_rate_s& rates) int rrc_nr::set_aggregate_max_bitrate(uint16_t rnti, const asn1::ngap::ue_aggregate_maximum_bit_rate_s& rates)
{ {
return SRSRAN_SUCCESS; return SRSRAN_SUCCESS;
} }
int rrc_nr::ue_set_security_cfg_capabilities(uint16_t rnti, const asn1::ngap_nr::ue_security_cap_s& caps) int rrc_nr::ue_set_security_cfg_capabilities(uint16_t rnti, const asn1::ngap::ue_security_cap_s& caps)
{ {
logger.debug("Setting securtiy capabilites for rnti=0x%x", rnti); logger.debug("Setting securtiy capabilites for rnti=0x%x", rnti);
auto ue_it = users.find(rnti); auto ue_it = users.find(rnti);

@ -26,7 +26,7 @@ asn1::rrc_nr::security_algorithm_cfg_s nr_security_context::get_security_algorit
return ret; return ret;
} }
bool nr_security_context::set_security_capabilities(const asn1::ngap_nr::ue_security_cap_s& caps) bool nr_security_context::set_security_capabilities(const asn1::ngap::ue_security_cap_s& caps)
{ {
security_capabilities = caps; security_capabilities = caps;

@ -97,7 +97,7 @@ void rrc_nr::ue::activity_timer_expired(const activity_timeout_type_t type)
state = rrc_nr_state_t::RRC_INACTIVE; state = rrc_nr_state_t::RRC_INACTIVE;
if (parent->cfg.is_standalone) { if (parent->cfg.is_standalone) {
// Start NGAP Release UE context // Start NGAP Release UE context
parent->ngap->user_release_request(rnti, asn1::ngap_nr::cause_radio_network_opts::user_inactivity); parent->ngap->user_release_request(rnti, asn1::ngap::cause_radio_network_opts::user_inactivity);
} else { } else {
parent->rrc_eutra->sgnb_inactivity_timeout(eutra_rnti); parent->rrc_eutra->sgnb_inactivity_timeout(eutra_rnti);
} }
@ -981,7 +981,7 @@ void rrc_nr::ue::handle_rrc_setup_complete(const asn1::rrc_nr::rrc_setup_complet
cell_group_cfg = next_cell_group_cfg; cell_group_cfg = next_cell_group_cfg;
// Create UE context in NGAP // Create UE context in NGAP
using ngap_cause_t = asn1::ngap_nr::rrcestablishment_cause_opts::options; using ngap_cause_t = asn1::ngap::rrcestablishment_cause_opts::options;
auto ngap_cause = (ngap_cause_t)ctxt.connection_cause.value; // NGAP and RRC causes seem to have a 1-1 mapping auto ngap_cause = (ngap_cause_t)ctxt.connection_cause.value; // NGAP and RRC causes seem to have a 1-1 mapping
parent->ngap->initial_ue( parent->ngap->initial_ue(
rnti, uecfg.carriers[0].cc, ngap_cause, msg.crit_exts.rrc_setup_complete().ded_nas_msg, ctxt.setup_ue_id); rnti, uecfg.carriers[0].cc, ngap_cause, msg.crit_exts.rrc_setup_complete().ded_nas_msg, ctxt.setup_ue_id);
@ -1017,7 +1017,7 @@ void rrc_nr::ue::send_security_mode_command(srsran::unique_byte_buffer_t nas_pdu
ies.security_cfg_smc.security_algorithm_cfg = sec_ctx.get_security_algorithm_cfg(); ies.security_cfg_smc.security_algorithm_cfg = sec_ctx.get_security_algorithm_cfg();
if (send_dl_dcch(srsran::nr_srb::srb1, dl_dcch_msg) != SRSRAN_SUCCESS) { if (send_dl_dcch(srsran::nr_srb::srb1, dl_dcch_msg) != SRSRAN_SUCCESS) {
parent->ngap->user_release_request(rnti, asn1::ngap_nr::cause_radio_network_opts::radio_res_not_available); parent->ngap->user_release_request(rnti, asn1::ngap::cause_radio_network_opts::radio_res_not_available);
} }
} }
@ -1061,7 +1061,7 @@ void rrc_nr::ue::send_rrc_reconfiguration()
// Pack masterCellGroup into container // Pack masterCellGroup into container
srsran::unique_byte_buffer_t pdu = parent->pack_into_pdu(master_cell_group, __FUNCTION__); srsran::unique_byte_buffer_t pdu = parent->pack_into_pdu(master_cell_group, __FUNCTION__);
if (pdu == nullptr) { if (pdu == nullptr) {
parent->ngap->user_release_request(rnti, asn1::ngap_nr::cause_radio_network_opts::radio_res_not_available); parent->ngap->user_release_request(rnti, asn1::ngap::cause_radio_network_opts::radio_res_not_available);
return; return;
} }
ies.non_crit_ext.master_cell_group.resize(pdu->N_bytes); ies.non_crit_ext.master_cell_group.resize(pdu->N_bytes);
@ -1097,7 +1097,7 @@ void rrc_nr::ue::send_rrc_reconfiguration()
ies.non_crit_ext_present = ies.non_crit_ext.master_cell_group_present or ies.non_crit_ext.ded_nas_msg_list_present; ies.non_crit_ext_present = ies.non_crit_ext.master_cell_group_present or ies.non_crit_ext.ded_nas_msg_list_present;
if (send_dl_dcch(srsran::nr_srb::srb1, dl_dcch_msg) != SRSRAN_SUCCESS) { if (send_dl_dcch(srsran::nr_srb::srb1, dl_dcch_msg) != SRSRAN_SUCCESS) {
parent->ngap->user_release_request(rnti, asn1::ngap_nr::cause_radio_network_opts::radio_res_not_available); parent->ngap->user_release_request(rnti, asn1::ngap::cause_radio_network_opts::radio_res_not_available);
} }
} }
@ -1140,7 +1140,7 @@ void rrc_nr::ue::send_dl_information_transfer(srsran::unique_byte_buffer_t sdu)
memcpy(ies.ded_nas_msg.data(), sdu->data(), ies.ded_nas_msg.size()); memcpy(ies.ded_nas_msg.data(), sdu->data(), ies.ded_nas_msg.size());
if (send_dl_dcch(srsran::nr_srb::srb1, dl_dcch_msg) != SRSRAN_SUCCESS) { if (send_dl_dcch(srsran::nr_srb::srb1, dl_dcch_msg) != SRSRAN_SUCCESS) {
parent->ngap->user_release_request(rnti, asn1::ngap_nr::cause_radio_network_opts::radio_res_not_available); parent->ngap->user_release_request(rnti, asn1::ngap::cause_radio_network_opts::radio_res_not_available);
} }
} }

@ -52,11 +52,11 @@ public:
class ngap_rrc_tester : public ngap_dummy class ngap_rrc_tester : public ngap_dummy
{ {
public: public:
void initial_ue(uint16_t rnti, void initial_ue(uint16_t rnti,
uint32_t gnb_cc_idx, uint32_t gnb_cc_idx,
asn1::ngap_nr::rrcestablishment_cause_e cause, asn1::ngap::rrcestablishment_cause_e cause,
srsran::const_byte_span pdu, srsran::const_byte_span pdu,
uint32_t s_tmsi) uint32_t s_tmsi)
{ {
last_sdu_rnti = rnti; last_sdu_rnti = rnti;
last_pdu.resize(pdu.size()); last_pdu.resize(pdu.size());

Loading…
Cancel
Save