Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
spbro
OpenXG-RAN
Commits
c8b67cb1
Commit
c8b67cb1
authored
Sep 10, 2020
by
heshanyun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
compile NGAP_GNB lib
parent
46f1dc96
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
143 additions
and
121 deletions
+143
-121
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+16
-16
common/utils/LOG/log.c
common/utils/LOG/log.c
+1
-0
common/utils/T/T_messages.txt
common/utils/T/T_messages.txt
+21
-0
executables/nr-softmodem.c
executables/nr-softmodem.c
+1
-2
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+4
-4
openair3/NGAP/ngap_common.h
openair3/NGAP/ngap_common.h
+6
-3
openair3/NGAP/ngap_gNB.c
openair3/NGAP/ngap_gNB.c
+2
-2
openair3/NGAP/ngap_gNB_context_management_procedures.c
openair3/NGAP/ngap_gNB_context_management_procedures.c
+4
-2
openair3/NGAP/ngap_gNB_decoder.c
openair3/NGAP/ngap_gNB_decoder.c
+7
-7
openair3/NGAP/ngap_gNB_defs.h
openair3/NGAP/ngap_gNB_defs.h
+1
-1
openair3/NGAP/ngap_gNB_encoder.c
openair3/NGAP/ngap_gNB_encoder.c
+8
-8
openair3/NGAP/ngap_gNB_handlers.c
openair3/NGAP/ngap_gNB_handlers.c
+28
-11
openair3/NGAP/ngap_gNB_management_procedures.c
openair3/NGAP/ngap_gNB_management_procedures.c
+2
-0
openair3/NGAP/ngap_gNB_nas_procedures.c
openair3/NGAP/ngap_gNB_nas_procedures.c
+24
-2
openair3/NGAP/ngap_gNB_nnsf.c
openair3/NGAP/ngap_gNB_nnsf.c
+2
-0
openair3/NGAP/ngap_gNB_overload.c
openair3/NGAP/ngap_gNB_overload.c
+2
-0
openair3/NGAP/ngap_gNB_trace.c
openair3/NGAP/ngap_gNB_trace.c
+2
-63
openair3/SCTP/sctp_gNB_defs.h
openair3/SCTP/sctp_gNB_defs.h
+0
-0
openair3/UTILS/conversions.h
openair3/UTILS/conversions.h
+12
-0
No files found.
cmake_targets/CMakeLists.txt
View file @
c8b67cb1
...
...
@@ -473,21 +473,21 @@ add_dependencies(NGAP_LIB rrc_flag ngap_flag)
include_directories
(
"
${
NGAP_C_DIR
}
"
)
include_directories
(
"
${
NGAP_DIR
}
"
)
#
add_library(NGAP_GNB
#
${NGAP_DIR}/ngap_gNB.c
#
${NGAP_DIR}/ngap_gNB_context_management_procedures.c
#
${NGAP_DIR}/ngap_gNB_decoder.c
#
${NGAP_DIR}/ngap_gNB_encoder.c
#
${NGAP_DIR}/ngap_gNB_handlers.c
#
${NGAP_DIR}/ngap_gNB_itti_messaging.c
#
${NGAP_DIR}/ngap_gNB_management_procedures.c
#
${NGAP_DIR}/ngap_gNB_nas_procedures.c
#
${NGAP_DIR}/ngap_gNB_nnsf.c
#
${NGAP_DIR}/ngap_gNB_overload.c
#
${NGAP_DIR}/ngap_gNB_trace.c
#
${NGAP_DIR}/ngap_gNB_ue_context.c
#
)
#
add_dependencies(NGAP_GNB rrc_flag ngap_flag)
add_library
(
NGAP_GNB
${
NGAP_DIR
}
/ngap_gNB.c
${
NGAP_DIR
}
/ngap_gNB_context_management_procedures.c
${
NGAP_DIR
}
/ngap_gNB_decoder.c
${
NGAP_DIR
}
/ngap_gNB_encoder.c
${
NGAP_DIR
}
/ngap_gNB_handlers.c
${
NGAP_DIR
}
/ngap_gNB_itti_messaging.c
${
NGAP_DIR
}
/ngap_gNB_management_procedures.c
${
NGAP_DIR
}
/ngap_gNB_nas_procedures.c
${
NGAP_DIR
}
/ngap_gNB_nnsf.c
${
NGAP_DIR
}
/ngap_gNB_overload.c
${
NGAP_DIR
}
/ngap_gNB_trace.c
${
NGAP_DIR
}
/ngap_gNB_ue_context.c
)
add_dependencies
(
NGAP_GNB rrc_flag ngap_flag
)
#M2AP
# Same limitation as described in RRC/S1AP: unknown generated file list
...
...
@@ -2800,7 +2800,7 @@ target_link_libraries (nr-softmodem
-Wl,--start-group
UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB SCHED_RU_LIB SCHED_NR_LIB PHY_NR PHY PHY_COMMON PHY_NR_COMMON PHY_RU LFDS NR_GTPV1U SECU_CN SECU_OSA
${
ITTI_LIB
}
${
FLPT_MSG_LIB
}
${
ASYNC_IF_LIB
}
${
FLEXRAN_AGENT_LIB
}
LFDS7
${
MSC_LIB
}
${
RAL_LIB
}
${
NAS_UE_LIB
}
RRC_LIB NR_RRC_LIB
NGAP_LIB S1AP_LIB S1AP_ENB L2 L2_NR MAC_NR_COMMON NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
NGAP_LIB
NGAP_GNB
S1AP_LIB S1AP_ENB L2 L2_NR MAC_NR_COMMON NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
X2AP_LIB X2AP_ENB F1AP_LIB F1AP M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB
${
PROTO_AGENT_LIB
}
${
FSPT_MSG_LIB
}
-Wl,--end-group z dl
)
...
...
common/utils/LOG/log.c
View file @
c8b67cb1
...
...
@@ -445,6 +445,7 @@ int logInit (void)
register_log_component
(
"NR_RRC"
,
"log"
,
NR_RRC
);
register_log_component
(
"NR_MAC"
,
"log"
,
NR_MAC
);
register_log_component
(
"NR_PHY"
,
"log"
,
NR_PHY
);
register_log_component
(
"NGAP"
,
""
,
NGAP
);
for
(
int
i
=
0
;
log_level_names
[
i
].
name
!=
NULL
;
i
++
)
g_log
->
level2string
[
i
]
=
toupper
(
log_level_names
[
i
].
name
[
0
]);
// uppercased first letter of level name
...
...
common/utils/T/T_messages.txt
View file @
c8b67cb1
...
...
@@ -384,6 +384,27 @@ ID = LEGACY_S1AP_TRACE
GROUP = ALL:LEGACY_S1AP:LEGACY_GROUP_TRACE:LEGACY
FORMAT = string,log
ID = LEGACY_NGAP_INFO
DESC = NGAP legacy logs - info level
GROUP = ALL:LEGACY_NGAP:LEGACY_GROUP_INFO:LEGACY
FORMAT = string,log
ID = LEGACY_NGAP_ERROR
DESC = NGAP legacy logs - error level
GROUP = ALL:LEGACY_NGAP:LEGACY_GROUP_ERROR:LEGACY
FORMAT = string,log
ID = LEGACY_NGAP_WARNING
DESC = NGAP legacy logs - warning level
GROUP = ALL:LEGACY_NGAP:LEGACY_GROUP_WARNING:LEGACY
FORMAT = string,log
ID = LEGACY_NGAP_DEBUG
DESC = NGAP legacy logs - debug level
GROUP = ALL:LEGACY_NGAP:LEGACY_GROUP_DEBUG:LEGACY
FORMAT = string,log
ID = LEGACY_NGAP_TRACE
DESC = NGAP legacy logs - trace level
GROUP = ALL:LEGACY_NGAP:LEGACY_GROUP_TRACE:LEGACY
FORMAT = string,log
ID = LEGACY_X2AP_INFO
DESC = X2AP legacy logs - info level
GROUP = ALL:LEGACY_X2AP:LEGACY_GROUP_INFO:LEGACY
...
...
executables/nr-softmodem.c
View file @
c8b67cb1
...
...
@@ -409,12 +409,11 @@ int create_gNB_tasks(uint32_t gnb_nb) {
return -1;
}
*/
/*
if
(
itti_create_task
(
TASK_NGAP
,
ngap_gNB_task
,
NULL
)
<
0
)
{
LOG_E
(
S1AP
,
"Create task for NGAP failed
\n
"
);
return
-
1
;
}
*/
if
(
!
emulate_rf
){
...
...
openair2/GNB_APP/gnb_config.c
View file @
c8b67cb1
...
...
@@ -344,7 +344,7 @@ void RCconfig_nr_flexran()
// Calculate a default gNB ID
if
(
EPC_MODE_ENABLED
)
//gnb_id = i + (ngap_generate_gNB_id () & 0xFFFF8);
gnb_id
=
i
+
(
s1ap_generate_e
NB_id
()
&
0xFFFF8
);
gnb_id
=
i
+
(
ngap_generate_g
NB_id
()
&
0xFFFF8
);
else
gnb_id
=
i
;
}
else
{
...
...
@@ -572,7 +572,7 @@ void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
if
(
EPC_MODE_ENABLED
)
{
uint32_t
hash
;
//hash = ngap_generate_gNB_id ();
hash
=
s1ap_generate_e
NB_id
();
hash
=
ngap_generate_g
NB_id
();
gnb_id
=
i
+
(
hash
&
0xFFFF8
);
}
else
{
gnb_id
=
i
;
...
...
@@ -790,7 +790,7 @@ int RCconfig_NR_NG(MessageDef *msg_p, uint32_t i) {
uint32_t
hash
;
//hash = ngap_generate_gNB_id ();
hash
=
s1ap_generate_e
NB_id
();
hash
=
ngap_generate_g
NB_id
();
gnb_id
=
k
+
(
hash
&
0xFFFF8
);
}
else
{
gnb_id
=
k
;
...
...
@@ -1040,7 +1040,7 @@ int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i) {
if
(
EPC_MODE_ENABLED
)
{
uint32_t
hash
;
//hash = ngap_generate_gNB_id ();
hash
=
s1ap_generate_e
NB_id
();
hash
=
ngap_generate_g
NB_id
();
gnb_id
=
k
+
(
hash
&
0xFFFF8
);
}
else
{
gnb_id
=
k
;
...
...
openair3/NGAP/ngap_common.h
View file @
c8b67cb1
...
...
@@ -53,8 +53,11 @@
#include "NGAP_ProtocolExtensionField.h"
#include "NGAP_ProtocolExtensionContainer.h"
#include "NGAP_asn_constant.h"
#include "NGAP_SupportedTAs-Item.h"
#include "NGAP_ServedGUAMIsItem.h"
#include "NGAP_SupportedTAItem.h"
#include "NGAP_ServedGUAMIItem.h"
#include "NGAP_BroadcastPLMNItem.h"
#include "NGAP_SliceSupportItem.h"
#include "NGAP_PLMNSupportItem.h"
/* Checking version of ASN1C compiler */
#if (ASN1C_ENVIRONMENT_VERSION < ASN1C_MINIMUM_VERSION)
...
...
@@ -75,7 +78,7 @@ extern int asn1_xer_print;
#if defined(ENB_MODE)
# include "common/utils/LOG/log.h"
# include "ngap_
e
NB_default_values.h"
# include "ngap_
g
NB_default_values.h"
# define NGAP_ERROR(x, args...) LOG_E(NGAP, x, ##args)
# define NGAP_WARN(x, args...) LOG_W(NGAP, x, ##args)
# define NGAP_TRAF(x, args...) LOG_I(NGAP, x, ##args)
...
...
openair3/NGAP/ngap_gNB.c
View file @
c8b67cb1
...
...
@@ -502,13 +502,13 @@ static int ngap_gNB_generate_ng_setup_request(
MCC_MNC_TO_TBCD
(
instance_p
->
mcc
[
ngap_amf_data_p
->
broadcast_plmn_index
[
i
]],
instance_p
->
mnc
[
ngap_amf_data_p
->
broadcast_plmn_index
[
i
]],
instance_p
->
mnc_digit_length
[
ngap_amf_data_p
->
broadcast_plmn_index
[
i
]],
plmn
->
pLMNIdentity
);
&
plmn
->
pLMNIdentity
);
for
(
int
si
=
0
;
si
<
instance_p
->
num_nssai
[
i
];
si
++
)
{
ssi
=
(
NGAP_SliceSupportItem_t
*
)
calloc
(
1
,
sizeof
(
NGAP_SliceSupportItem_t
));
INT8_TO_OCTET_STRING
(
instance_p
->
s_nssai
[
i
][
si
].
sST
,
&
ssi
->
s_NSSAI
.
sST
);
if
(
instance_p
->
s_nssai
[
i
]
.
sD_flag
)
{
if
(
instance_p
->
s_nssai
[
i
]
->
sD_flag
)
{
ssi
->
s_NSSAI
.
sD
=
calloc
(
1
,
sizeof
(
NGAP_SD_t
));
ssi
->
s_NSSAI
.
sD
->
buf
=
calloc
(
3
,
sizeof
(
uint8_t
));
ssi
->
s_NSSAI
.
sD
->
size
=
3
;
...
...
openair3/NGAP/ngap_gNB_context_management_procedures.c
View file @
c8b67cb1
...
...
@@ -53,6 +53,7 @@
int
ngap_ue_context_release_complete
(
instance_t
instance
,
ngap_ue_release_complete_t
*
ue_release_complete_p
)
{
#if 0
ngap_gNB_instance_t *ngap_gNB_instance_p = NULL;
struct ngap_gNB_ue_context_s *ue_context_p = NULL;
NGAP_NGAP_PDU_t pdu;
...
...
@@ -145,7 +146,7 @@ int ngap_ue_context_release_complete(instance_t instance,
ue_context_p->gNB_ue_ngap_id, ue_context_p->amf_ue_ngap_id,
ue_context_p->ue_state);
}*/
#endif
return
0
;
}
...
...
@@ -153,6 +154,7 @@ int ngap_ue_context_release_complete(instance_t instance,
int
ngap_ue_context_release_req
(
instance_t
instance
,
ngap_ue_release_req_t
*
ue_release_req_p
)
{
#if 0
ngap_gNB_instance_t *ngap_gNB_instance_p = NULL;
struct ngap_gNB_ue_context_s *ue_context_p = NULL;
NGAP_NGAP_PDU_t pdu;
...
...
@@ -260,7 +262,7 @@ int ngap_ue_context_release_req(instance_t instance,
ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
ue_context_p->amf_ref->assoc_id, buffer,
length, ue_context_p->tx_stream);
#endif
return
0
;
}
openair3/NGAP/ngap_gNB_decoder.c
View file @
c8b67cb1
...
...
@@ -41,7 +41,7 @@ static int ngap_gNB_decode_initiating_message(NGAP_NGAP_PDU_t *pdu) {
DevAssert
(
pdu
!=
NULL
);
switch
(
pdu
->
choice
.
initiatingMessage
.
procedureCode
)
{
case
NGAP_ProcedureCode_id_
d
ownlinkNASTransport
:
case
NGAP_ProcedureCode_id_
D
ownlinkNASTransport
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_NGAP_NGAP_PDU
,
pdu
);
free
(
res
.
buffer
);
break
;
...
...
@@ -62,19 +62,19 @@ static int ngap_gNB_decode_initiating_message(NGAP_NGAP_PDU_t *pdu) {
free
(
res
.
buffer
);
break
;
case
NGAP_ProcedureCode_id_PDUS
ESSION
Setup
:
case
NGAP_ProcedureCode_id_PDUS
essionResource
Setup
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_NGAP_NGAP_PDU
,
pdu
);
free
(
res
.
buffer
);
NGAP_INFO
(
"PDUSESSIONSetup initiating message
\n
"
);
break
;
case
NGAP_ProcedureCode_id_PDUS
ESSION
Modify
:
case
NGAP_ProcedureCode_id_PDUS
essionResource
Modify
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_NGAP_NGAP_PDU
,
pdu
);
free
(
res
.
buffer
);
NGAP_INFO
(
"PDUSESSIONModify initiating message
\n
"
);
break
;
case
NGAP_ProcedureCode_id_PDUS
ESSION
Release
:
case
NGAP_ProcedureCode_id_PDUS
essionResource
Release
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_NGAP_NGAP_PDU
,
pdu
);
free
(
res
.
buffer
);
NGAP_INFO
(
"TODO PDUSESSIONRelease initiating message
\n
"
);
...
...
@@ -102,7 +102,7 @@ static int ngap_gNB_decode_successful_outcome(NGAP_NGAP_PDU_t *pdu) {
DevAssert
(
pdu
!=
NULL
);
switch
(
pdu
->
choice
.
successfulOutcome
.
procedureCode
)
{
case
NGAP_ProcedureCode_id_
S1
Setup
:
case
NGAP_ProcedureCode_id_
NG
Setup
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_NGAP_NGAP_PDU
,
pdu
);
free
(
res
.
buffer
);
break
;
...
...
@@ -112,7 +112,7 @@ static int ngap_gNB_decode_successful_outcome(NGAP_NGAP_PDU_t *pdu) {
free
(
res
.
buffer
);
break
;
case
NGAP_ProcedureCode_id_PDUS
ESSIONModification
Indication
:
case
NGAP_ProcedureCode_id_PDUS
essionResourceModify
Indication
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_NGAP_NGAP_PDU
,
pdu
);
free
(
res
.
buffer
);
break
;
...
...
@@ -132,7 +132,7 @@ static int ngap_gNB_decode_unsuccessful_outcome(NGAP_NGAP_PDU_t *pdu) {
DevAssert
(
pdu
!=
NULL
);
switch
(
pdu
->
choice
.
unsuccessfulOutcome
.
procedureCode
)
{
case
NGAP_ProcedureCode_id_
S1
Setup
:
case
NGAP_ProcedureCode_id_
NG
Setup
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_NGAP_NGAP_PDU
,
pdu
);
free
(
res
.
buffer
);
break
;
...
...
openair3/NGAP/ngap_gNB_defs.h
View file @
c8b67cb1
...
...
@@ -135,7 +135,7 @@ typedef struct ngap_gNB_NSSAI_s{
/* plmn support element */
struct
plmn_support_s
{
plmn_identity_s
plmn_identity
;
struct
plmn_identity_s
plmn_identity
;
/* Number of slice support in list */
uint8_t
nb_slice_s
;
...
...
openair3/NGAP/ngap_gNB_encoder.c
View file @
c8b67cb1
...
...
@@ -83,22 +83,22 @@ int ngap_gNB_encode_initiating(NGAP_NGAP_PDU_t *pdu,
DevAssert
(
pdu
!=
NULL
);
switch
(
pdu
->
choice
.
initiatingMessage
.
procedureCode
)
{
case
NGAP_ProcedureCode_id_
S1
Setup
:
case
NGAP_ProcedureCode_id_
NG
Setup
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_NGAP_NGAP_PDU
,
pdu
);
free
(
res
.
buffer
);
break
;
case
NGAP_ProcedureCode_id_
u
plinkNASTransport
:
case
NGAP_ProcedureCode_id_
U
plinkNASTransport
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_NGAP_NGAP_PDU
,
pdu
);
free
(
res
.
buffer
);
break
;
case
NGAP_ProcedureCode_id_UECapabilityInfoIndication
:
case
NGAP_ProcedureCode_id_UE
Radio
CapabilityInfoIndication
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_NGAP_NGAP_PDU
,
pdu
);
free
(
res
.
buffer
);
break
;
case
NGAP_ProcedureCode_id_
i
nitialUEMessage
:
case
NGAP_ProcedureCode_id_
I
nitialUEMessage
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_NGAP_NGAP_PDU
,
pdu
);
free
(
res
.
buffer
);
break
;
...
...
@@ -118,7 +118,7 @@ int ngap_gNB_encode_initiating(NGAP_NGAP_PDU_t *pdu,
free
(
res
.
buffer
);
break
;
case
NGAP_ProcedureCode_id_PDUS
ESSIONModification
Indication
:
case
NGAP_ProcedureCode_id_PDUS
essionResourceModify
Indication
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_NGAP_NGAP_PDU
,
pdu
);
free
(
res
.
buffer
);
break
;
...
...
@@ -157,19 +157,19 @@ int ngap_gNB_encode_successfull_outcome(NGAP_NGAP_PDU_t *pdu,
free
(
res
.
buffer
);
break
;
case
NGAP_ProcedureCode_id_PDUS
ESSION
Setup
:
case
NGAP_ProcedureCode_id_PDUS
essionResource
Setup
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_NGAP_NGAP_PDU
,
pdu
);
free
(
res
.
buffer
);
NGAP_INFO
(
"PDUSESSIONSetup successful message
\n
"
);
break
;
case
NGAP_ProcedureCode_id_PDUS
ESSION
Modify
:
case
NGAP_ProcedureCode_id_PDUS
essionResource
Modify
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_NGAP_NGAP_PDU
,
pdu
);
free
(
res
.
buffer
);
NGAP_INFO
(
"PDUSESSIONModify successful message
\n
"
);
break
;
case
NGAP_ProcedureCode_id_PDUS
ESSION
Release
:
case
NGAP_ProcedureCode_id_PDUS
essionResource
Release
:
res
=
asn_encode_to_new_buffer
(
NULL
,
ATS_CANONICAL_XER
,
&
asn_DEF_NGAP_NGAP_PDU
,
pdu
);
free
(
res
.
buffer
);
NGAP_INFO
(
"PDUSESSION Release successful message
\n
"
);
...
...
openair3/NGAP/ngap_gNB_handlers.c
View file @
c8b67cb1
...
...
@@ -110,7 +110,7 @@ int ngap_gNB_handle_ng_ENDC_pdusession_modification_confirm(uint32_t
NGAP_NGAP_PDU_t
*
pdu
);
/* Handlers matrix. Only gNB related procedure present here */
ngap_message_decoded_callback
messages_callback
[][
3
]
=
{
ngap_message_decoded_callback
ngap_
messages_callback
[][
3
]
=
{
{
0
,
0
,
0
},
/* AMFConfigurationUpdate */
{
0
,
0
,
0
},
/* AMFStatusIndication */
{
0
,
0
,
0
},
/* CellTrafficTrace */
...
...
@@ -229,7 +229,7 @@ int ngap_gNB_handle_message(uint32_t assoc_id, int32_t stream,
}
/* Checking procedure Code and direction of message */
if
(
pdu
.
choice
.
initiatingMessage
.
procedureCode
>=
sizeof
(
messages_callback
)
/
(
3
*
sizeof
(
if
(
pdu
.
choice
.
initiatingMessage
.
procedureCode
>=
sizeof
(
ngap_
messages_callback
)
/
(
3
*
sizeof
(
ngap_message_decoded_callback
))
||
(
pdu
.
present
>
NGAP_NGAP_PDU_PR_unsuccessfulOutcome
))
{
NGAP_ERROR
(
"[SCTP %d] Either procedureCode %ld or direction %d exceed expected
\n
"
,
...
...
@@ -241,7 +241,7 @@ int ngap_gNB_handle_message(uint32_t assoc_id, int32_t stream,
/* No handler present.
* This can mean not implemented or no procedure for gNB (wrong direction).
*/
if
(
messages_callback
[
pdu
.
choice
.
initiatingMessage
.
procedureCode
][
pdu
.
present
-
1
]
==
NULL
)
{
if
(
ngap_
messages_callback
[
pdu
.
choice
.
initiatingMessage
.
procedureCode
][
pdu
.
present
-
1
]
==
NULL
)
{
NGAP_ERROR
(
"[SCTP %d] No handler for procedureCode %ld in %s
\n
"
,
assoc_id
,
pdu
.
choice
.
initiatingMessage
.
procedureCode
,
ngap_direction2String
(
pdu
.
present
-
1
));
...
...
@@ -250,7 +250,7 @@ int ngap_gNB_handle_message(uint32_t assoc_id, int32_t stream,
}
/* Calling the right handler */
ret
=
(
*
messages_callback
[
pdu
.
choice
.
initiatingMessage
.
procedureCode
][
pdu
.
present
-
1
])
ret
=
(
*
ngap_
messages_callback
[
pdu
.
choice
.
initiatingMessage
.
procedureCode
][
pdu
.
present
-
1
])
(
assoc_id
,
stream
,
&
pdu
);
ASN_STRUCT_FREE_CONTENTS_ONLY
(
asn_DEF_NGAP_NGAP_PDU
,
&
pdu
);
return
ret
;
...
...
@@ -297,6 +297,7 @@ static
int
ngap_gNB_handle_ng_setup_response
(
uint32_t
assoc_id
,
uint32_t
stream
,
NGAP_NGAP_PDU_t
*
pdu
)
{
#if 0
NGAP_NGSetupResponse_t *container;
NGAP_NGSetupResponseIEs_t *ie;
ngap_gNB_amf_data_t *amf_desc_p;
...
...
@@ -386,10 +387,10 @@ int ngap_gNB_handle_ng_setup_response(uint32_t assoc_id,
if (ie) {
amf_desc_p->amf_name = calloc(ie->value.choice.AMFName.size + 1, sizeof(char));
memcpy
(
amf_desc_p
->
amf_name
,
ie
->
value
.
choice
.
AMF
n
ame
.
buf
,
ie
->
value
.
choice
.
AMF
n
ame
.
size
);
memcpy(amf_desc_p->amf_name, ie->value.choice.AMF
N
ame.buf,
ie->value.choice.AMF
N
ame.size);
/* Convert the amf name to a printable string */
amf_desc_p
->
amf_name
[
ie
->
value
.
choice
.
AMF
n
ame
.
size
]
=
'\0'
;
amf_desc_p->amf_name[ie->value.choice.AMF
N
ame.size] = '\0';
}
...
...
@@ -446,6 +447,7 @@ int ngap_gNB_handle_ng_setup_response(uint32_t assoc_id,
amf_desc_p->state = NGAP_GNB_STATE_CONNECTED;
amf_desc_p->ngap_gNB_instance->ngap_amf_associated_nb ++;
ngap_handle_ng_setup_message(amf_desc_p, 0);
#endif
return
0
;
}
...
...
@@ -454,6 +456,7 @@ static
int
ngap_gNB_handle_error_indication
(
uint32_t
assoc_id
,
uint32_t
stream
,
NGAP_NGAP_PDU_t
*
pdu
)
{
#if 0
NGAP_ErrorIndication_t *container;
NGAP_ErrorIndicationIEs_t *ie;
ngap_gNB_amf_data_t *amf_desc_p;
...
...
@@ -781,6 +784,7 @@ int ngap_gNB_handle_error_indication(uint32_t assoc_id,
// TODO continue
}
#endif
// TODO continue
return
0
;
}
...
...
@@ -790,6 +794,7 @@ static
int
ngap_gNB_handle_initial_context_request
(
uint32_t
assoc_id
,
uint32_t
stream
,
NGAP_NGAP_PDU_t
*
pdu
)
{
#if 0
int i;
ngap_gNB_amf_data_t *amf_desc_p = NULL;
ngap_gNB_ue_context_t *ue_desc_p = NULL;
...
...
@@ -1070,7 +1075,7 @@ int ngap_gNB_handle_initial_context_request(uint32_t assoc_id,
} else {/* ie != NULL */
return -1;
}
#endif
return
0
;
}
...
...
@@ -1079,6 +1084,7 @@ static
int
ngap_gNB_handle_ue_context_release_command
(
uint32_t
assoc_id
,
uint32_t
stream
,
NGAP_NGAP_PDU_t
*
pdu
)
{
#if 0
ngap_gNB_amf_data_t *amf_desc_p = NULL;
ngap_gNB_ue_context_t *ue_desc_p = NULL;
MessageDef *message_p = NULL;
...
...
@@ -1158,12 +1164,15 @@ int ngap_gNB_handle_ue_context_release_command(uint32_t assoc_id,
NGAP_FIND_PROTOCOLIE_BY_ID(NGAP_UEContextReleaseCommand_IEs_t, ie, container,
NGAP_ProtocolIE_ID_id_Cause, true);
/* TBD */
#endif
return
0
;
}
static
int
ngap_gNB_handle_pdusession_setup_request
(
uint32_t
assoc_id
,
uint32_t
stream
,
NGAP_NGAP_PDU_t
*
pdu
)
{
#if 0
int i;
NGAP_AMF_UE_NGAP_ID_t amf_ue_ngap_id;
NGAP_GNB_UE_NGAP_ID_t enb_ue_ngap_id;
...
...
@@ -1278,7 +1287,7 @@ int ngap_gNB_handle_pdusession_setup_request(uint32_t assoc_id,
} else {
return -1;
}
#endif
return
0
;
}
...
...
@@ -1286,6 +1295,7 @@ static
int
ngap_gNB_handle_paging
(
uint32_t
assoc_id
,
uint32_t
stream
,
NGAP_NGAP_PDU_t
*
pdu
)
{
#if 0
ngap_gNB_amf_data_t *amf_desc_p = NULL;
ngap_gNB_instance_t *ngap_gNB_instance = NULL;
MessageDef *message_p = NULL;
...
...
@@ -1449,6 +1459,7 @@ int ngap_gNB_handle_paging(uint32_t assoc_id,
NGAP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[4], NGAP_PAGING_IND(message_p).ue_paging_identity.choice.imsi.buffer[5]);
/* send message to RRC */
itti_send_msg_to_task(TASK_RRC_GNB, ngap_gNB_instance->instance, message_p);
#endif
return
0
;
}
...
...
@@ -1456,6 +1467,7 @@ static
int
ngap_gNB_handle_pdusession_modify_request
(
uint32_t
assoc_id
,
uint32_t
stream
,
NGAP_NGAP_PDU_t
*
pdu
)
{
#if 0
int i, nb_of_pdusessions_failed;
ngap_gNB_amf_data_t *amf_desc_p = NULL;
ngap_gNB_ue_context_t *ue_desc_p = NULL;
...
...
@@ -1582,7 +1594,7 @@ int ngap_gNB_handle_pdusession_modify_request(uint32_t assoc_id,
} else { /* of if (ie != NULL)*/
return -1;
}
#endif
return
0
;
}
// handle e-rab release command and send it to rrc_end
...
...
@@ -1590,6 +1602,7 @@ static
int
ngap_gNB_handle_pdusession_release_command
(
uint32_t
assoc_id
,
uint32_t
stream
,
NGAP_NGAP_PDU_t
*
pdu
)
{
#if 0
int i;
ngap_gNB_amf_data_t *amf_desc_p = NULL;
ngap_gNB_ue_context_t *ue_desc_p = NULL;
...
...
@@ -1687,6 +1700,7 @@ int ngap_gNB_handle_pdusession_release_command(uint32_t assoc_id,
}
itti_send_msg_to_task(TASK_RRC_GNB, ue_desc_p->gNB_instance->instance, message_p);
#endif
return
0
;
}
...
...
@@ -1694,6 +1708,7 @@ static
int
ngap_gNB_handle_ng_path_switch_request_ack
(
uint32_t
assoc_id
,
uint32_t
stream
,
NGAP_NGAP_PDU_t
*
pdu
)
{
#if 0
ngap_gNB_amf_data_t *amf_desc_p = NULL;
ngap_gNB_ue_context_t *ue_desc_p = NULL;
MessageDef *message_p = NULL;
...
...
@@ -1851,6 +1866,7 @@ int ngap_gNB_handle_ng_path_switch_request_ack(uint32_t assoc_id,
// TODO continue
itti_send_msg_to_task(TASK_RRC_GNB, ue_desc_p->gNB_instance->instance, message_p);
#endif
return
0
;
}
...
...
@@ -1858,6 +1874,7 @@ static
int
ngap_gNB_handle_ng_path_switch_request_failure
(
uint32_t
assoc_id
,
uint32_t
stream
,
NGAP_NGAP_PDU_t
*
pdu
)
{
#if 0
ngap_gNB_amf_data_t *amf_desc_p = NULL;
NGAP_PathSwitchRequestFailure_t *pathSwitchRequestFailure;
NGAP_PathSwitchRequestFailureIEs_t *ie;
...
...
@@ -1917,7 +1934,7 @@ int ngap_gNB_handle_ng_path_switch_request_failure(uint32_t assoc_
if(!ie) {
NGAP_WARN("Critical Diagnostic not supported\n");
}
#endif
// TODO continue
return
0
;
}
...
...
openair3/NGAP/ngap_gNB_management_procedures.c
View file @
c8b67cb1
...
...
@@ -152,6 +152,7 @@ ngap_gNB_instance_t *ngap_gNB_get_instance(instance_t instance)
void
ngap_gNB_remove_amf_desc
(
ngap_gNB_instance_t
*
instance
)
{
#if 0
struct ngap_gNB_amf_data_s *amf = NULL;
struct ngap_gNB_amf_data_s *amfNext = NULL;
struct plmn_identity_s* plmnInfo;
...
...
@@ -185,4 +186,5 @@ void ngap_gNB_remove_amf_desc(ngap_gNB_instance_t * instance)
}
free(amf);
}
#endif
}
openair3/NGAP/ngap_gNB_nas_procedures.c
View file @
c8b67cb1
...
...
@@ -53,6 +53,7 @@ int ngap_gNB_handle_nas_first_req(
instance_t
instance
,
ngap_nas_first_req_t
*
ngap_nas_first_req_p
)
//------------------------------------------------------------------------------
{
#if 0
ngap_gNB_instance_t *instance_p = NULL;
struct ngap_gNB_amf_data_s *amf_desc_p = NULL;
struct ngap_gNB_ue_context_s *ue_desc_p = NULL;
...
...
@@ -314,6 +315,7 @@ int ngap_gNB_handle_nas_first_req(
/* Send encoded message over sctp */
ngap_gNB_itti_send_sctp_data_req
(
instance_p
->
instance
,
amf_desc_p
->
assoc_id
,
buffer
,
length
,
ue_desc_p
->
tx_stream
);
#endif
return
0
;
}
...
...
@@ -323,6 +325,7 @@ int ngap_gNB_handle_nas_downlink(uint32_t assoc_id,
NGAP_NGAP_PDU_t
*
pdu
)
//------------------------------------------------------------------------------
{
#if 0
ngap_gNB_amf_data_t *amf_desc_p = NULL;
ngap_gNB_ue_context_t *ue_desc_p = NULL;
ngap_gNB_instance_t *ngap_gNB_instance = NULL;
...
...
@@ -415,6 +418,7 @@ int ngap_gNB_handle_nas_downlink(uint32_t assoc_id,
ue_desc_p->gNB_ue_ngap_id,
ie->value.choice.NAS_PDU.buf,
ie->value.choice.NAS_PDU.size);
#endif
return
0
;
}
...
...
@@ -422,6 +426,7 @@ int ngap_gNB_handle_nas_downlink(uint32_t assoc_id,
int
ngap_gNB_nas_uplink
(
instance_t
instance
,
ngap_uplink_nas_t
*
ngap_uplink_nas_p
)
//------------------------------------------------------------------------------
{
#if 0
struct ngap_gNB_ue_context_s *ue_context_p;
ngap_gNB_instance_t *ngap_gNB_instance_p;
NGAP_NGAP_PDU_t pdu;
...
...
@@ -530,6 +535,7 @@ int ngap_gNB_nas_uplink(instance_t instance, ngap_uplink_nas_t *ngap_uplink_nas_
ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
ue_context_p->amf_ref->assoc_id, buffer,
length, ue_context_p->tx_stream);
#endif
return
0
;
}
...
...
@@ -539,6 +545,7 @@ int ngap_gNB_nas_non_delivery_ind(instance_t instance,
ngap_nas_non_delivery_ind_t
*
ngap_nas_non_delivery_ind
)
//------------------------------------------------------------------------------
{
#if 0
struct ngap_gNB_ue_context_s *ue_context_p;
ngap_gNB_instance_t *ngap_gNB_instance_p;
NGAP_NGAP_PDU_t pdu;
...
...
@@ -623,6 +630,7 @@ int ngap_gNB_nas_non_delivery_ind(instance_t instance,
ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
ue_context_p->amf_ref->assoc_id, buffer,
length, ue_context_p->tx_stream);
#endif
return
0
;
}
...
...
@@ -631,6 +639,7 @@ int ngap_gNB_initial_ctxt_resp(
instance_t
instance
,
ngap_initial_context_setup_resp_t
*
initial_ctxt_resp_p
)
//------------------------------------------------------------------------------
{
#if 0
ngap_gNB_instance_t *ngap_gNB_instance_p = NULL;
struct ngap_gNB_ue_context_s *ue_context_p = NULL;
NGAP_NGAP_PDU_t pdu;
...
...
@@ -796,6 +805,7 @@ int ngap_gNB_initial_ctxt_resp(
ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
ue_context_p->amf_ref->assoc_id, buffer,
length, ue_context_p->tx_stream);
#endif
return
0
;
}
...
...
@@ -804,6 +814,7 @@ int ngap_gNB_ue_capabilities(instance_t instance,
ngap_ue_cap_info_ind_t
*
ue_cap_info_ind_p
)
//------------------------------------------------------------------------------
{
#if 0
ngap_gNB_instance_t *ngap_gNB_instance_p;
struct ngap_gNB_ue_context_s *ue_context_p;
NGAP_NGAP_PDU_t pdu;
...
...
@@ -885,6 +896,7 @@ int ngap_gNB_ue_capabilities(instance_t instance,
ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
ue_context_p->amf_ref->assoc_id, buffer,
length, ue_context_p->tx_stream);
#endif
return
0
;
}
...
...
@@ -893,6 +905,7 @@ int ngap_gNB_pdusession_setup_resp(instance_t instance,
ngap_pdusession_setup_resp_t
*
pdusession_setup_resp_p
)
//------------------------------------------------------------------------------
{
#if 0
ngap_gNB_instance_t *ngap_gNB_instance_p = NULL;
struct ngap_gNB_ue_context_s *ue_context_p = NULL;
NGAP_NGAP_PDU_t pdu;
...
...
@@ -1069,6 +1082,7 @@ int ngap_gNB_pdusession_setup_resp(instance_t instance,
ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
ue_context_p->amf_ref->assoc_id, buffer,
length, ue_context_p->tx_stream);
#endif
return
0
;
}
...
...
@@ -1077,6 +1091,7 @@ int ngap_gNB_pdusession_modify_resp(instance_t instance,
ngap_pdusession_modify_resp_t
*
pdusession_modify_resp_p
)
//------------------------------------------------------------------------------
{
#if 0
ngap_gNB_instance_t *ngap_gNB_instance_p = NULL;
struct ngap_gNB_ue_context_s *ue_context_p = NULL;
NGAP_NGAP_PDU_t pdu;
...
...
@@ -1232,6 +1247,7 @@ int ngap_gNB_pdusession_modify_resp(instance_t instance,
ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
ue_context_p->amf_ref->assoc_id, buffer,
length, ue_context_p->tx_stream);
#endif
return
0
;
}
//------------------------------------------------------------------------------
...
...
@@ -1239,6 +1255,7 @@ int ngap_gNB_pdusession_release_resp(instance_t instance,
ngap_pdusession_release_resp_t
*
pdusession_release_resp_p
)
//------------------------------------------------------------------------------
{
#if 0
ngap_gNB_instance_t *ngap_gNB_instance_p = NULL;
struct ngap_gNB_ue_context_s *ue_context_p = NULL;
NGAP_NGAP_PDU_t pdu;
...
...
@@ -1374,6 +1391,7 @@ int ngap_gNB_pdusession_release_resp(instance_t instance,
length, ue_context_p->tx_stream);
NGAP_INFO("pdusession_release_response sended gNB_UE_NGAP_ID %d amf_ue_ngap_id %d nb_of_pdusessions_released %d nb_of_pdusessions_failed %d\n",
pdusession_release_resp_p->gNB_ue_ngap_id, ue_context_p->amf_ue_ngap_id,pdusession_release_resp_p->nb_of_pdusessions_released,pdusession_release_resp_p->nb_of_pdusessions_failed);
#endif
return
0
;
}
...
...
@@ -1381,6 +1399,7 @@ int ngap_gNB_path_switch_req(instance_t instance,
ngap_path_switch_req_t
*
path_switch_req_p
)
//------------------------------------------------------------------------------
{
#if 0
ngap_gNB_instance_t *ngap_gNB_instance_p = NULL;
struct ngap_gNB_ue_context_s *ue_context_p = NULL;
struct ngap_gNB_amf_data_s *amf_desc_p = NULL;
...
...
@@ -1610,8 +1629,9 @@ int ngap_gNB_path_switch_req(instance_t instance,
ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance,
amf_desc_p->assoc_id, buffer,
length, ue_context_p->tx_stream);
#endif
return
ret
;
return
0
;
}
...
...
@@ -1777,6 +1797,7 @@ int ngap_gNB_generate_PDUSESSION_Modification_Indication(
ngap_pdusession_modification_ind_t
*
pdusession_modification_ind
)
//-----------------------------------------------------------------------------
{
#if 0
struct ngap_gNB_ue_context_s *ue_context_p = NULL;
NGAP_NGAP_PDU_t pdu;
NGAP_PDUSESSIONModificationIndication_t *out = NULL;
...
...
@@ -1925,7 +1946,8 @@ int ngap_gNB_generate_PDUSESSION_Modification_Indication(
len, ue_context_p->tx_stream);
//ngap_gNB_itti_send_sctp_data_req(ngap_gNB_instance_p->instance, ue_context_p->amf_ref->assoc_id, buffer, len, 0);
return
ret
;
#endif
return
0
;
}
openair3/NGAP/ngap_gNB_nnsf.c
View file @
c8b67cb1
...
...
@@ -339,6 +339,7 @@ ngap_gNB_nnsf_select_amf_by_guami_no_cause(ngap_gNB_instance_t *instance_p
struct
ngap_gNB_amf_data_s
*
amf_highest_capacity_p
=
NULL
;
uint8_t
current_capacity
=
0
;
#if 0
RB_FOREACH(amf_data_p, ngap_amf_map, &instance_p->ngap_amf_head) {
struct served_guami_s *guami_p = NULL;
...
...
@@ -403,5 +404,6 @@ ngap_gNB_nnsf_select_amf_by_guami_no_cause(ngap_gNB_instance_t *instance_p
* In case the list of known AMF is empty, simply return NULL, that way the RRC
* layer should know about it and reject RRC connectivity.
*/
#endif
return
amf_highest_capacity_p
;
}
openair3/NGAP/ngap_gNB_overload.c
View file @
c8b67cb1
...
...
@@ -47,6 +47,7 @@ int ngap_gNB_handle_overload_start(uint32_t assoc_id,
uint32_t
stream
,
NGAP_NGAP_PDU_t
*
pdu
)
{
#if 0
ngap_gNB_amf_data_t *amf_desc_p;
NGAP_OverloadStart_t *container;
NGAP_OverloadStartIEs_t *ie;
...
...
@@ -77,6 +78,7 @@ int ngap_gNB_handle_overload_start(uint32_t assoc_id,
amf_desc_p->overload_state =
ie->value.choice.OverloadResponse.choice.overloadAction;
#endif
return
0
;
}
...
...
openair3/NGAP/ngap_gNB_trace.c
View file @
c8b67cb1
...
...
@@ -37,74 +37,12 @@
#include "ngap_gNB_itti_messaging.h"
#include "ngap_gNB_management_procedures.h"
static
void
ngap_gNB_generate_trace_failure
(
struct
ngap_gNB_ue_context_s
*
ue_desc_p
,
NGAP_E_UTRAN_Trace_ID_t
*
trace_id
,
NGAP_Cause_t
*
cause_p
)
{
NGAP_NGAP_PDU_t
pdu
;
NGAP_TraceFailureIndication_t
*
out
;
NGAP_TraceFailureIndicationIEs_t
*
ie
;
uint8_t
*
buffer
=
NULL
;
uint32_t
length
;
DevAssert
(
ue_desc_p
!=
NULL
);
DevAssert
(
trace_id
!=
NULL
);
DevAssert
(
cause_p
!=
NULL
);
/* Prepare the NGAP message to encode */
memset
(
&
pdu
,
0
,
sizeof
(
pdu
));
pdu
.
present
=
NGAP_NGAP_PDU_PR_initiatingMessage
;
pdu
.
choice
.
initiatingMessage
.
procedureCode
=
NGAP_ProcedureCode_id_TraceFailureIndication
;
pdu
.
choice
.
initiatingMessage
.
criticality
=
NGAP_Criticality_ignore
;
pdu
.
choice
.
initiatingMessage
.
value
.
present
=
NGAP_InitiatingMessage__value_PR_TraceFailureIndication
;
out
=
&
pdu
.
choice
.
initiatingMessage
.
value
.
choice
.
TraceFailureIndication
;
/* mandatory */
ie
=
(
NGAP_TraceFailureIndicationIEs_t
*
)
calloc
(
1
,
sizeof
(
NGAP_TraceFailureIndicationIEs_t
));
ie
->
id
=
NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID
;
ie
->
criticality
=
NGAP_Criticality_reject
;
ie
->
value
.
present
=
NGAP_TraceFailureIndicationIEs__value_PR_AMF_UE_NGAP_ID
;
ie
->
value
.
choice
.
AMF_UE_NGAP_ID
=
ue_desc_p
->
amf_ue_ngap_id
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* mandatory */
ie
=
(
NGAP_TraceFailureIndicationIEs_t
*
)
calloc
(
1
,
sizeof
(
NGAP_TraceFailureIndicationIEs_t
));
ie
->
id
=
NGAP_ProtocolIE_ID_id_gNB_UE_NGAP_ID
;
ie
->
criticality
=
NGAP_Criticality_reject
;
ie
->
value
.
present
=
NGAP_TraceFailureIndicationIEs__value_PR_GNB_UE_NGAP_ID
;
ie
->
value
.
choice
.
GNB_UE_NGAP_ID
=
ue_desc_p
->
gNB_ue_ngap_id
;
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* mandatory */
ie
=
(
NGAP_TraceFailureIndicationIEs_t
*
)
calloc
(
1
,
sizeof
(
NGAP_TraceFailureIndicationIEs_t
));
ie
->
id
=
NGAP_ProtocolIE_ID_id_E_UTRAN_Trace_ID
;
ie
->
criticality
=
NGAP_Criticality_ignore
;
ie
->
value
.
present
=
NGAP_TraceFailureIndicationIEs__value_PR_E_UTRAN_Trace_ID
;
memcpy
(
&
ie
->
value
.
choice
.
E_UTRAN_Trace_ID
,
trace_id
,
sizeof
(
NGAP_E_UTRAN_Trace_ID_t
));
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
/* mandatory */
ie
=
(
NGAP_TraceFailureIndicationIEs_t
*
)
calloc
(
1
,
sizeof
(
NGAP_TraceFailureIndicationIEs_t
));
ie
->
id
=
NGAP_ProtocolIE_ID_id_Cause
;
ie
->
criticality
=
NGAP_Criticality_ignore
;
ie
->
value
.
present
=
NGAP_TraceFailureIndicationIEs__value_PR_Cause
;
memcpy
(
&
ie
->
value
.
choice
.
Cause
,
cause_p
,
sizeof
(
NGAP_Cause_t
));
ASN_SEQUENCE_ADD
(
&
out
->
protocolIEs
.
list
,
ie
);
if
(
ngap_gNB_encode_pdu
(
&
pdu
,
&
buffer
,
&
length
)
<
0
)
{
return
;
}
ngap_gNB_itti_send_sctp_data_req
(
ue_desc_p
->
amf_ref
->
ngap_gNB_instance
->
instance
,
ue_desc_p
->
amf_ref
->
assoc_id
,
buffer
,
length
,
ue_desc_p
->
tx_stream
);
}
int
ngap_gNB_handle_trace_start
(
uint32_t
assoc_id
,
uint32_t
stream
,
NGAP_NGAP_PDU_t
*
pdu
)
{
#if 0
NGAP_TraceStart_t *container;
NGAP_TraceStartIEs_t *ie;
struct ngap_gNB_ue_context_s *ue_desc_p = NULL;
...
...
@@ -135,6 +73,7 @@ int ngap_gNB_handle_trace_start(uint32_t assoc_id,
ngap_gNB_generate_trace_failure(NULL, &trace_id, &cause);
}
#endif
return
0
;
}
...
...
openair3/SCTP/sctp_gNB_defs.h
0 → 100644
View file @
c8b67cb1
openair3/UTILS/conversions.h
View file @
c8b67cb1
...
...
@@ -502,6 +502,18 @@ do { \
(bITsTRING)->size = 3; \
(bITsTRING)->bits_unused = 4; \
} while(0)
#define MACRO_GNB_ID_TO_BIT_STRING(mACRO, bITsTRING) \
do { \
(bITsTRING)->buf = calloc(3, sizeof(uint8_t)); \
(bITsTRING)->buf[0] = ((mACRO) >> 12); \
(bITsTRING)->buf[1] = (mACRO) >> 4; \
(bITsTRING)->buf[2] = ((mACRO) & 0x0f) << 4; \
(bITsTRING)->size = 3; \
(bITsTRING)->bits_unused = 4; \
} while(0)
/* TS 36.413 v10.9.0 section 9.2.1.38:
* E-UTRAN CGI/Cell Identity
* The leftmost bits of the Cell
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment