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
Michael Black
OpenXG-RAN
Commits
5ee44e01
Commit
5ee44e01
authored
May 05, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/simplify-pdu-session-management' into integration_2023_w18b
parents
b2cc7505
15e85827
Changes
17
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
566 additions
and
669 deletions
+566
-669
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
+389
-443
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
+106
-139
openair2/RRC/NR/rrc_gNB_NGAP.h
openair2/RRC/NR/rrc_gNB_NGAP.h
+3
-6
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 @
5ee44e01
...
...
@@ -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 @
5ee44e01
...
...
@@ -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 @
5ee44e01
...
...
@@ -3808,7 +3808,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 @
5ee44e01
...
...
@@ -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 @
5ee44e01
...
...
@@ -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 @
5ee44e01
...
...
@@ -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 @
5ee44e01
...
...
@@ -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 @
5ee44e01
...
...
@@ -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 @
5ee44e01
...
...
@@ -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 @
5ee44e01
This diff is collapsed.
Click to expand it.
openair2/RRC/NR/rrc_gNB_GTPV1U.c
View file @
5ee44e01
...
...
@@ -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 @
5ee44e01
This diff is collapsed.
Click to expand it.
openair2/RRC/NR/rrc_gNB_NGAP.h
View file @
5ee44e01
...
...
@@ -96,12 +96,9 @@ int rrc_gNB_process_NGAP_UE_CONTEXT_RELEASE_COMMAND(MessageDef *msg_p, instance_
void
rrc_gNB_send_NGAP_UE_CONTEXT_RELEASE_COMPLETE
(
instance_t
instance
,
uint32_t
gNB_ue_ngap_id
);
void
rrc_gNB_send_NGAP_UE_CAPABILITIES_IND
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_gNB_ue_context_t
*
const
ue_context_pP
,
NR_UL_DCCH_Message_t
*
const
ul_dcch_msg
);
void
rrc_gNB_send_NGAP_UE_CAPABILITIES_IND
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_gNB_ue_context_t
*
const
ue_context_pP
,
const
NR_UECapabilityInformation_t
*
const
ue_cap_info
);
int
rrc_gNB_process_NGAP_PDUSESSION_RELEASE_COMMAND
(
MessageDef
*
msg_p
,
instance_t
instance
);
...
...
openair2/RRC/NR/rrc_gNB_UE_context.c
View file @
5ee44e01
...
...
@@ -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 @
5ee44e01
...
...
@@ -411,11 +411,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 @
5ee44e01
...
...
@@ -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 @
5ee44e01
...
...
@@ -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