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
lizhongxiao
OpenXG-RAN
Commits
84fa481e
Commit
84fa481e
authored
Apr 17, 2023
by
laurent
Committed by
Laurent THOMAS
Apr 28, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove pdu session duplicated structs
parent
6022fe5a
Changes
16
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
287 additions
and
362 deletions
+287
-362
executables/nr-cuup.c
executables/nr-cuup.c
+1
-1
openair2/COMMON/ngap_messages_types.h
openair2/COMMON/ngap_messages_types.h
+10
-14
openair2/RRC/LTE/MESSAGES/asn1_msg.c
openair2/RRC/LTE/MESSAGES/asn1_msg.c
+0
-1
openair2/RRC/NR/MESSAGES/asn1_msg.c
openair2/RRC/NR/MESSAGES/asn1_msg.c
+0
-1
openair2/RRC/NR/cucp_cuup_direct.c
openair2/RRC/NR/cucp_cuup_direct.c
+4
-3
openair2/RRC/NR/cucp_cuup_e1ap.c
openair2/RRC/NR/cucp_cuup_e1ap.c
+5
-3
openair2/RRC/NR/cucp_cuup_if.h
openair2/RRC/NR/cucp_cuup_if.h
+1
-1
openair2/RRC/NR/nr_rrc_defs.h
openair2/RRC/NR/nr_rrc_defs.h
+30
-37
openair2/RRC/NR/nr_rrc_proto.h
openair2/RRC/NR/nr_rrc_proto.h
+1
-2
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+125
-155
openair2/RRC/NR/rrc_gNB_GTPV1U.c
openair2/RRC/NR/rrc_gNB_GTPV1U.c
+9
-9
openair2/RRC/NR/rrc_gNB_NGAP.c
openair2/RRC/NR/rrc_gNB_NGAP.c
+94
-126
openair2/RRC/NR/rrc_gNB_UE_context.c
openair2/RRC/NR/rrc_gNB_UE_context.c
+1
-4
openair2/RRC/NR/rrc_gNB_nsa.c
openair2/RRC/NR/rrc_gNB_nsa.c
+4
-4
openair3/NGAP/ngap_gNB_nas_procedures.c
openair3/NGAP/ngap_gNB_nas_procedures.c
+1
-1
openair3/ocp-gtpu/gtp_itf.cpp
openair3/ocp-gtpu/gtp_itf.cpp
+1
-0
No files found.
executables/nr-cuup.c
View file @
84fa481e
...
...
@@ -111,7 +111,7 @@ f1ap_cudu_inst_t *getCxt(F1_t isCU, instance_t instanceP)
return
NULL
;
}
void
fill_DRB_configList
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_gNB_ue_context_t
*
ue_context_pP
)
void
fill_DRB_configList
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_gNB_ue_context_t
*
ue_context_pP
,
uint8_t
xid
)
{
abort
();
}
...
...
openair2/COMMON/ngap_messages_types.h
View file @
84fa481e
...
...
@@ -263,17 +263,6 @@ typedef enum pdu_session_type_e {
PDUSessionType_unstructured
=
4
}
pdu_session_type_t
;
typedef
struct
ngap_transport_layer_addr_s
{
/* Length of the transport layer address buffer in bits. NGAP layer received a
* bit string<1..160> containing one of the following addresses: ipv4,
* ipv6, or ipv4 and ipv6. The layer doesn't interpret the buffer but
* silently forward it to NG-U.
*/
uint8_t
pdu_session_type
;
uint8_t
length
;
uint8_t
buffer
[
20
];
// in network byte order
}
ngap_transport_layer_addr_t
;
typedef
struct
pdusession_s
{
/* Unique pdusession_id for the UE. */
int
pdusession_id
;
...
...
@@ -283,11 +272,16 @@ typedef struct pdusession_s {
/* Quality of service for this pdusession */
pdusession_level_qos_parameter_t
qos
[
QOSFLOW_MAX_VALUE
];
/* The transport layer address for the IP packets */
ngap_transport_layer_addr_t
upf_addr
;
pdu_session_type_t
pdu_session_type
;
transport_layer_addr_t
upf_addr
;
/* S-GW Tunnel endpoint identifier */
uint32_t
gtp_teid
;
/* Stores the DRB ID of the DRBs used by this PDU Session */
uint8_t
used_drbs
[
NGAP_MAX_DRBS_PER_UE
];
uint32_t
gNB_teid_N3
;
transport_layer_addr_t
gNB_addr_N3
;
uint32_t
UPF_teid_N3
;
transport_layer_addr_t
UPF_addr_N3
;
}
pdusession_t
;
typedef
enum
pdusession_qosflow_mapping_ind_e
{
...
...
@@ -306,7 +300,8 @@ typedef struct pdusession_setup_s {
uint8_t
pdusession_id
;
/* The transport layer address for the IP packets */
ngap_transport_layer_addr_t
gNB_addr
;
uint8_t
pdu_session_type
;
transport_layer_addr_t
gNB_addr
;
/* UPF Tunnel endpoint identifier */
uint32_t
gtp_teid
;
...
...
@@ -323,7 +318,8 @@ typedef struct pdusession_tobeswitched_s {
uint8_t
pdusession_id
;
/* The transport layer address for the IP packets */
ngap_transport_layer_addr_t
upf_addr
;
uint8_t
pdu_session_type
;
transport_layer_addr_t
upf_addr
;
/* S-GW Tunnel endpoint identifier */
uint32_t
gtp_teid
;
...
...
openair2/RRC/LTE/MESSAGES/asn1_msg.c
View file @
84fa481e
...
...
@@ -3809,7 +3809,6 @@ do_RRCConnectionReestablishment(
LTE_DL_CCCH_Message_t
dl_ccch_msg
;
LTE_RRCConnectionReestablishment_t
*
rrcConnectionReestablishment
=
NULL
;
int
i
=
0
;
ue_context_pP
->
ue_context
.
reestablishment_xid
=
Transaction_id
;
LTE_SRB_ToAddModList_t
**
SRB_configList2
=
NULL
;
SRB_configList2
=
&
ue_context_pP
->
ue_context
.
SRB_configList2
[
Transaction_id
];
...
...
openair2/RRC/NR/MESSAGES/asn1_msg.c
View file @
84fa481e
...
...
@@ -1139,7 +1139,6 @@ int do_RRCReestablishment(const protocol_ctxt_t *const ctxt_pP,
struct
NR_SRB_ToAddMod
*
SRB2_config
=
NULL
;
NR_DL_DCCH_Message_t
dl_dcch_msg
=
{
0
};
NR_RRCReestablishment_t
*
rrcReestablishment
=
NULL
;
ue_context_pP
->
ue_context
.
reestablishment_xid
=
Transaction_id
;
NR_SRB_ToAddModList_t
**
SRB_configList2
=
NULL
;
SRB_configList2
=
&
ue_context_pP
->
ue_context
.
SRB_configList2
[
Transaction_id
];
...
...
openair2/RRC/NR/cucp_cuup_direct.c
View file @
84fa481e
...
...
@@ -179,13 +179,14 @@ static NR_SRB_ToAddModList_t **generateSRB2_confList(gNB_RRC_UE_t *ue, NR_SRB_To
return
SRB_configList2
;
}
static
void
cucp_cuup_bearer_context_setup_direct
(
e1ap_bearer_setup_req_t
*
const
req
,
instance_t
instance
)
{
static
void
cucp_cuup_bearer_context_setup_direct
(
e1ap_bearer_setup_req_t
*
const
req
,
instance_t
instance
,
uint8_t
xid
)
{
rrc_gNB_ue_context_t
*
ue_context_p
=
rrc_gNB_get_ue_context_by_rnti
(
RC
.
nrrrc
[
instance
],
req
->
rnti
);
gNB_RRC_UE_t
*
UE
=
&
ue_context_p
->
ue_context
;
protocol_ctxt_t
ctxt
=
{
0
};
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
0
,
GNB_FLAG_YES
,
UE
->
rnti
,
0
,
0
,
0
);
fill_DRB_configList
(
&
ctxt
,
ue_context_p
);
fill_DRB_configList
(
&
ctxt
,
ue_context_p
,
xid
);
gNB_RRC_INST
*
rrc
=
RC
.
nrrrc
[
ctxt
.
module_id
];
// Fixme: xid not random, but almost!
...
...
@@ -208,7 +209,7 @@ static void cucp_cuup_bearer_context_setup_direct(e1ap_bearer_setup_req_t *const
}
}
static
void
cucp_cuup_bearer_context_mod_direct
(
e1ap_bearer_setup_req_t
*
const
req
,
instance_t
instance
)
{
static
void
cucp_cuup_bearer_context_mod_direct
(
e1ap_bearer_setup_req_t
*
const
req
,
instance_t
instance
,
uint8_t
xid
)
{
instance_t
gtpInst
=
getCxt
(
CUtype
,
instance
)
->
gtpInst
;
CU_update_UP_DL_tunnel
(
req
,
gtpInst
,
req
->
rnti
);
}
...
...
openair2/RRC/NR/cucp_cuup_e1ap.c
View file @
84fa481e
...
...
@@ -35,12 +35,13 @@
extern
RAN_CONTEXT_t
RC
;
static
void
cucp_cuup_bearer_context_setup_e1ap
(
e1ap_bearer_setup_req_t
*
const
req
,
instance_t
instance
)
{
static
void
cucp_cuup_bearer_context_setup_e1ap
(
e1ap_bearer_setup_req_t
*
const
req
,
instance_t
instance
,
uint8_t
xid
)
{
rrc_gNB_ue_context_t
*
ue_context_p
=
rrc_gNB_get_ue_context_by_rnti
(
RC
.
nrrrc
[
instance
],
req
->
rnti
);
protocol_ctxt_t
ctxt
=
{
0
};
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
0
,
GNB_FLAG_YES
,
ue_context_p
->
ue_context
.
rnti
,
0
,
0
,
0
);
fill_DRB_configList
(
&
ctxt
,
ue_context_p
);
fill_DRB_configList
(
&
ctxt
,
ue_context_p
,
xid
);
MessageDef
*
msg_p
=
itti_alloc_new_message
(
TASK_CUCP_E1
,
instance
,
E1AP_BEARER_CONTEXT_SETUP_REQ
);
e1ap_bearer_setup_req_t
*
bearer_req
=
&
E1AP_BEARER_CONTEXT_SETUP_REQ
(
msg_p
);
memcpy
(
bearer_req
,
req
,
sizeof
(
e1ap_bearer_setup_req_t
));
...
...
@@ -48,7 +49,8 @@ static void cucp_cuup_bearer_context_setup_e1ap(e1ap_bearer_setup_req_t *const r
itti_send_msg_to_task
(
TASK_CUCP_E1
,
instance
,
msg_p
);
}
static
void
cucp_cuup_bearer_context_mod_e1ap
(
e1ap_bearer_setup_req_t
*
const
req
,
instance_t
instance
)
{
static
void
cucp_cuup_bearer_context_mod_e1ap
(
e1ap_bearer_setup_req_t
*
const
req
,
instance_t
instance
,
uint8_t
xid
)
{
MessageDef
*
msg
=
itti_alloc_new_message
(
TASK_CUCP_E1
,
instance
,
E1AP_BEARER_CONTEXT_MODIFICATION_REQ
);
e1ap_bearer_setup_req_t
*
req_msg
=
&
E1AP_BEARER_CONTEXT_SETUP_REQ
(
msg
);
memcpy
(
req_msg
,
req
,
sizeof
(
*
req
));
...
...
openair2/RRC/NR/cucp_cuup_if.h
View file @
84fa481e
...
...
@@ -27,7 +27,7 @@
struct
e1ap_bearer_setup_req_s
;
struct
e1ap_bearer_setup_resp_s
;
typedef
void
(
*
cucp_cuup_bearer_context_setup_func_t
)(
struct
e1ap_bearer_setup_req_s
*
const
req
,
instance_t
instance
);
typedef
void
(
*
cucp_cuup_bearer_context_setup_func_t
)(
struct
e1ap_bearer_setup_req_s
*
const
req
,
instance_t
instance
,
uint8_t
xid
);
struct
gNB_RRC_INST_s
;
void
cucp_cuup_message_transfer_direct_init
(
struct
gNB_RRC_INST_s
*
rrc
);
...
...
openair2/RRC/NR/nr_rrc_defs.h
View file @
84fa481e
...
...
@@ -128,7 +128,7 @@ typedef enum UE_STATE_NR_e {
#define NO_SECURITY_MODE 0x20
/* TS 36.331: RRC-TransactionIdentifier ::= INTEGER (0..3) */
#define NR_RRC_TRANSACTION_IDENTIFIER_NUMBER
3
#define NR_RRC_TRANSACTION_IDENTIFIER_NUMBER
4
typedef
struct
{
unsigned
short
transport_block_size
;
/*!< \brief Minimum PDU size in bytes provided by RLC to MAC layer interface */
...
...
@@ -258,14 +258,15 @@ typedef enum pdu_session_satus_e {
PDU_SESSION_STATUS_DONE
,
PDU_SESSION_STATUS_ESTABLISHED
,
PDU_SESSION_STATUS_REESTABLISHED
,
// after HO
PDU_SESSION_STATUS_TOMODIFY
,
// ENDC NSA
PDU_SESSION_STATUS_TOMODIFY
,
// ENDC NSA
PDU_SESSION_STATUS_FAILED
,
PDU_SESSION_STATUS_TORELEASE
// to release DRB between eNB and UE
PDU_SESSION_STATUS_TORELEASE
,
// to release DRB between eNB and UE
PDU_SESSION_STATUS_RELEASED
}
pdu_session_status_t
;
typedef
struct
pdu_session_param_s
{
pdusession_t
param
;
uint8
_t
status
;
pdu_session_status
_t
status
;
uint8_t
xid
;
// transaction_id
ngap_Cause_t
cause
;
uint8_t
cause_value
;
...
...
@@ -305,6 +306,19 @@ typedef struct drb_s {
}
pdcp_config
;
}
drb_t
;
typedef
enum
{
RRC_FIRST_RECONF
,
RRC_SETUP
,
RRC_SETUP_FOR_REESTABLISHMENT
,
RRC_REESTABLISH
,
RRC_REESTABLISH_COMPLETE
,
RRC_DEFAULT_RECONF
,
RRC_DEDICATED_RECONF
,
RRC_PDUSESSION_ESTABLISH
,
RRC_PDUSESSION_MODIFY
,
RRC_PDUSESSION_RELEASE
}
rrc_action_t
;
typedef
struct
gNB_RRC_UE_s
{
uint8_t
primaryCC_id
;
NR_SRB_ToAddModList_t
*
SRB_configList
;
...
...
@@ -369,38 +383,20 @@ typedef struct gNB_RRC_UE_s {
nr_rrc_guami_t
ue_guami
;
ngap_security_capabilities_t
security_capabilities
;
/* Total number of e_rab already setup in the list */
uint8_t
setup_e_rabs
;
/* Number of e_rab to be setup in the list */
//NSA block
/* Number of NSA e_rab */
uint8_t
nb_of_e_rabs
;
/* Number of e_rab to be modified in the list */
uint8_t
nb_of_modify_e_rabs
;
uint8_t
nb_of_failed_e_rabs
;
nr_e_rab_param_t
modify_e_rab
[
NB_RB_MAX
];
//[S1AP_MAX_E_RAB];
/* Number of pdu session managed for the ue */
uint8_t
nb_of_pdusessions
;
/* Number of e_rab to be modified in the list */
uint8_t
nb_of_modify_pdusessions
;
uint8_t
nb_of_failed_pdusessions
;
rrc_pdu_session_param_t
modify_pdusession
[
NR_NB_RB_MAX
];
/* list of e_rab to be setup by RRC layers */
/* list of pdu session to be setup by RRC layers */
nr_e_rab_param_t
e_rab
[
NB_RB_MAX
];
//[S1AP_MAX_E_RAB];
rrc_pdu_session_param_t
pduSession
[
NGAP_MAX_PDU_SESSION
];
//release e_rabs
uint8_t
nb_release_of_e_rabs
;
e_rab_failed_t
e_rabs_release_failed
[
S1AP_MAX_E_RAB
];
uint8_t
nb_release_of_pdusessions
;
pdusession_failed_t
pdusessions_release_failed
[
NGAP_MAX_PDUSESSION
];
// LG: For GTPV1 TUNNELS
uint32_t
gnb_gtp_teid
[
S1AP_MAX_E_RAB
];
transport_layer_addr_t
gnb_gtp_addrs
[
S1AP_MAX_E_RAB
];
rb_id_t
gnb_gtp_ebi
[
S1AP_MAX_E_RAB
];
rb_id_t
gnb_gtp_psi
[
S1AP_MAX_E_RAB
];
//GTPV1 F1-U TUNNELS
uint32_t
incoming_teid
[
S1AP_MAX_E_RAB
];
uint32_t
nsa_gtp_teid
[
S1AP_MAX_E_RAB
];
transport_layer_addr_t
nsa_gtp_addrs
[
S1AP_MAX_E_RAB
];
rb_id_t
nsa_gtp_ebi
[
S1AP_MAX_E_RAB
];
rb_id_t
nsa_gtp_psi
[
S1AP_MAX_E_RAB
];
//SA block
int
nb_of_pdusessions
;
rrc_pdu_session_param_t
pduSession
[
NGAP_MAX_PDU_SESSION
];
rrc_action_t
xids
[
NR_RRC_TRANSACTION_IDENTIFIER_NUMBER
];
uint32_t
ul_failure_timer
;
uint32_t
ue_release_timer
;
uint32_t
ue_release_timer_thres
;
...
...
@@ -412,11 +408,8 @@ typedef struct gNB_RRC_UE_s {
uint32_t
ue_release_timer_thres_rrc
;
uint32_t
ue_reestablishment_timer
;
uint32_t
ue_reestablishment_timer_thres
;
uint8_t
e_rab_release_command_flag
;
uint8_t
pdu_session_release_command_flag
;
uint8_t
established_pdu_sessions_flag
;
uint32_t
ue_rrc_inactivity_timer
;
int8_t
reestablishment_xid
;
uint8_t
e_rab_release_command_flag
;
uint32_t
ue_rrc_inactivity_timer
;
uint32_t
ue_reestablishment_counter
;
uint32_t
ue_reconfiguration_after_reestablishment_counter
;
NR_CellGroupId_t
cellGroupId
;
...
...
openair2/RRC/NR/nr_rrc_proto.h
View file @
84fa481e
...
...
@@ -164,8 +164,7 @@ void ue_cxt_mod_send_e1ap(MessageDef *msg,
void
ue_cxt_mod_direct
(
MessageDef
*
msg
,
instance_t
instance
);
void
fill_DRB_configList
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_gNB_ue_context_t
*
ue_context_pP
);
void
fill_DRB_configList
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_gNB_ue_context_t
*
ue_context_pP
,
uint8_t
xid
);
void
prepare_and_send_ue_context_modification_f1
(
rrc_gNB_ue_context_t
*
ue_context_p
,
e1ap_bearer_setup_resp_t
*
e1ap_resp
);
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
84fa481e
This diff is collapsed.
Click to expand it.
openair2/RRC/NR/rrc_gNB_GTPV1U.c
View file @
84fa481e
...
...
@@ -58,14 +58,14 @@ int rrc_gNB_process_GTPV1U_CREATE_TUNNEL_RESP(const protocol_ctxt_t *const ctxt_
return
-
1
;
}
for
(
int
i
=
0
;
i
<
create_tunnel_resp_pP
->
num_tunnels
;
i
++
)
{
ue_context_p
->
ue_context
.
gnb
_gtp_teid
[
inde_list
[
i
]]
=
create_tunnel_resp_pP
->
enb_S1u_teid
[
i
];
ue_context_p
->
ue_context
.
gnb
_gtp_addrs
[
inde_list
[
i
]]
=
create_tunnel_resp_pP
->
enb_addr
;
ue_context_p
->
ue_context
.
gnb
_gtp_ebi
[
inde_list
[
i
]]
=
create_tunnel_resp_pP
->
eps_bearer_id
[
i
];
ue_context_p
->
ue_context
.
nsa
_gtp_teid
[
inde_list
[
i
]]
=
create_tunnel_resp_pP
->
enb_S1u_teid
[
i
];
ue_context_p
->
ue_context
.
nsa
_gtp_addrs
[
inde_list
[
i
]]
=
create_tunnel_resp_pP
->
enb_addr
;
ue_context_p
->
ue_context
.
nsa
_gtp_ebi
[
inde_list
[
i
]]
=
create_tunnel_resp_pP
->
eps_bearer_id
[
i
];
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" rrc_eNB_process_GTPV1U_CREATE_TUNNEL_RESP tunnel (%u, %u) bearer UE context index %u, msg index %u, id %u, gtp addr len %d
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
create_tunnel_resp_pP
->
enb_S1u_teid
[
i
],
ue_context_p
->
ue_context
.
gnb
_gtp_teid
[
inde_list
[
i
]],
ue_context_p
->
ue_context
.
nsa
_gtp_teid
[
inde_list
[
i
]],
inde_list
[
i
],
i
,
create_tunnel_resp_pP
->
eps_bearer_id
[
i
],
...
...
@@ -90,14 +90,14 @@ int nr_rrc_gNB_process_GTPV1U_CREATE_TUNNEL_RESP(const protocol_ctxt_t *const ct
}
for
(
int
i
=
0
;
i
<
create_tunnel_resp_pP
->
num_tunnels
;
i
++
)
{
ue_context_p
->
ue_context
.
gnb_gtp_teid
[
i
+
offset
]
=
create_tunnel_resp_pP
->
gnb_NGu_teid
[
i
];
ue_context_p
->
ue_context
.
gnb_gtp_addrs
[
i
+
offset
]
=
create_tunnel_resp_pP
->
gnb_addr
;
ue_context_p
->
ue_context
.
gnb_gtp_psi
[
i
+
offset
]
=
create_tunnel_resp_pP
->
pdusession_id
[
i
]
;
ue_context_p
->
ue_context
.
pduSession
[
i
+
offset
].
param
.
gNB_teid_N3
=
create_tunnel_resp_pP
->
gnb_NGu_teid
[
i
];
ue_context_p
->
ue_context
.
pduSession
[
i
+
offset
].
param
.
gNB_addr_N3
=
create_tunnel_resp_pP
->
gnb_addr
;
AssertFatal
(
ue_context_p
->
ue_context
.
pduSession
[
i
+
offset
].
param
.
pdusession_id
==
create_tunnel_resp_pP
->
pdusession_id
[
i
],
""
)
;
LOG_I
(
NR_RRC
,
PROTOCOL_NR_RRC_CTXT_UE_FMT
" nr_rrc_gNB_process_GTPV1U_CREATE_TUNNEL_RESP tunnel (%u, %u) bearer UE context index %u, id %u, gtp addr len %d
\n
"
,
PROTOCOL_NR_RRC_CTXT_UE_FMT
" nr_rrc_gNB_process_GTPV1U_CREATE_TUNNEL_RESP tunnel (%u) bearer UE context index %u, id %u, gtp addr len %d
\n
"
,
PROTOCOL_NR_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
create_tunnel_resp_pP
->
gnb_NGu_teid
[
i
],
ue_context_p
->
ue_context
.
gnb_gtp_teid
[
i
+
offset
],
i
,
create_tunnel_resp_pP
->
pdusession_id
[
i
],
create_tunnel_resp_pP
->
gnb_addr
.
length
);
...
...
openair2/RRC/NR/rrc_gNB_NGAP.c
View file @
84fa481e
This diff is collapsed.
Click to expand it.
openair2/RRC/NR/rrc_gNB_UE_context.c
View file @
84fa481e
...
...
@@ -68,11 +68,8 @@ rrc_gNB_ue_context_t *rrc_gNB_allocate_new_ue_context(gNB_RRC_INST *rrc_instance
}
new_p
->
ue_context
.
gNB_ue_ngap_id
=
uid_linear_allocator_new
(
&
rrc_instance_pP
->
uid_allocator
);
for
(
int
i
=
0
;
i
<
NB_RB_MAX
;
i
++
)
{
new_p
->
ue_context
.
e_rab
[
i
].
xid
=
-
1
;
for
(
int
i
=
0
;
i
<
NB_RB_MAX
;
i
++
)
new_p
->
ue_context
.
pduSession
[
i
].
xid
=
-
1
;
new_p
->
ue_context
.
modify_e_rab
[
i
].
xid
=
-
1
;
}
LOG_I
(
NR_RRC
,
"Returning new RRC UE context RRC ue id: %d
\n
"
,
new_p
->
ue_context
.
gNB_ue_ngap_id
);
return
(
new_p
);
...
...
openair2/RRC/NR/rrc_gNB_nsa.c
View file @
84fa481e
...
...
@@ -408,11 +408,11 @@ void rrc_remove_nsa_user(gNB_RRC_INST *rrc, int rnti) {
tmp
.
from_gnb
=
1
;
LOG_D
(
RRC
,
"ue_context->ue_context.nb_of_e_rabs %d will be deleted for rnti %d
\n
"
,
ue_context
->
ue_context
.
nb_of_e_rabs
,
rnti
);
for
(
e_rab
=
0
;
e_rab
<
ue_context
->
ue_context
.
nb_of_e_rabs
;
e_rab
++
)
{
tmp
.
eps_bearer_id
[
tmp
.
num_erab
++
]
=
ue_context
->
ue_context
.
gnb
_gtp_ebi
[
e_rab
];
tmp
.
eps_bearer_id
[
tmp
.
num_erab
++
]
=
ue_context
->
ue_context
.
nsa
_gtp_ebi
[
e_rab
];
// erase data
ue_context
->
ue_context
.
gnb
_gtp_teid
[
e_rab
]
=
0
;
memset
(
&
ue_context
->
ue_context
.
gnb_gtp_addrs
[
e_rab
],
0
,
sizeof
(
ue_context
->
ue_context
.
gnb
_gtp_addrs
[
e_rab
]));
ue_context
->
ue_context
.
gnb
_gtp_ebi
[
e_rab
]
=
0
;
ue_context
->
ue_context
.
nsa
_gtp_teid
[
e_rab
]
=
0
;
memset
(
&
ue_context
->
ue_context
.
nsa_gtp_addrs
[
e_rab
],
0
,
sizeof
(
ue_context
->
ue_context
.
nsa
_gtp_addrs
[
e_rab
]));
ue_context
->
ue_context
.
nsa
_gtp_ebi
[
e_rab
]
=
0
;
}
gtpv1u_delete_s1u_tunnel
(
rrc
->
module_id
,
&
tmp
);
/* remove context */
...
...
openair3/NGAP/ngap_gNB_nas_procedures.c
View file @
84fa481e
...
...
@@ -58,7 +58,7 @@ static void allocCopy(OCTET_STRING_t *out, ngap_pdu_t in)
out
->
size
=
in
.
length
;
}
static
void
allocAddrCopy
(
BIT_STRING_t
*
out
,
ngap_
transport_layer_addr_t
in
)
static
void
allocAddrCopy
(
BIT_STRING_t
*
out
,
transport_layer_addr_t
in
)
{
if
(
in
.
length
)
{
out
->
buf
=
malloc
(
in
.
length
);
...
...
openair3/ocp-gtpu/gtp_itf.cpp
View file @
84fa481e
...
...
@@ -762,6 +762,7 @@ int gtpv1u_create_ngu_tunnel(const instance_t instance,
create_tunnel_resp
->
gnb_NGu_teid
[
i
]
=
teid
;
memcpy
(
create_tunnel_resp
->
gnb_addr
.
buffer
,
addr
,
sizeof
(
addr
));
create_tunnel_resp
->
gnb_addr
.
length
=
sizeof
(
addr
);
create_tunnel_resp
->
pdusession_id
[
i
]
=
create_tunnel_req
->
pdusession_id
[
i
];
}
return
!
GTPNOK
;
...
...
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