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
wangwenhui
OpenXG-RAN
Commits
290c2774
Commit
290c2774
authored
Aug 01, 2019
by
Cedric Roux
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dual-connectivity' into develop-nr-merge
parents
920c1452
2955ae47
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
1204 additions
and
20 deletions
+1204
-20
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+0
-1
openair2/COMMON/x2ap_messages_def.h
openair2/COMMON/x2ap_messages_def.h
+3
-0
openair2/COMMON/x2ap_messages_types.h
openair2/COMMON/x2ap_messages_types.h
+77
-10
openair2/X2AP/MESSAGES/ASN1/R15/x2ap-15.1.0.asn1
openair2/X2AP/MESSAGES/ASN1/R15/x2ap-15.1.0.asn1
+2
-2
openair2/X2AP/x2ap_eNB.c
openair2/X2AP/x2ap_eNB.c
+2
-1
openair2/X2AP/x2ap_eNB_decoder.c
openair2/X2AP/x2ap_eNB_decoder.c
+10
-2
openair2/X2AP/x2ap_eNB_defs.h
openair2/X2AP/x2ap_eNB_defs.h
+6
-0
openair2/X2AP/x2ap_eNB_encoder.c
openair2/X2AP/x2ap_eNB_encoder.c
+2
-2
openair2/X2AP/x2ap_eNB_generate_messages.c
openair2/X2AP/x2ap_eNB_generate_messages.c
+520
-0
openair2/X2AP/x2ap_eNB_generate_messages.h
openair2/X2AP/x2ap_eNB_generate_messages.h
+10
-0
openair2/X2AP/x2ap_eNB_handler.c
openair2/X2AP/x2ap_eNB_handler.c
+552
-2
openair3/UTILS/conversions.h
openair3/UTILS/conversions.h
+20
-0
No files found.
cmake_targets/CMakeLists.txt
View file @
290c2774
...
@@ -469,7 +469,6 @@ endif(${X2AP_RELEASE} STREQUAL "R8")
...
@@ -469,7 +469,6 @@ endif(${X2AP_RELEASE} STREQUAL "R8")
add_definitions
(
-DX2AP_VERSION=
${
X2AP_VERSION
}
)
add_definitions
(
-DX2AP_VERSION=
${
X2AP_VERSION
}
)
set
(
X2AP_ASN_DIR
${
X2AP_DIR
}
/MESSAGES/ASN1/
${
X2AP_RELEASE
}
)
set
(
X2AP_ASN_DIR
${
X2AP_DIR
}
/MESSAGES/ASN1/
${
X2AP_RELEASE
}
)
set
(
X2AP_C_DIR
${
asn1_generated_dir
}
/X2AP_
${
X2AP_RELEASE
}
)
set
(
X2AP_C_DIR
${
asn1_generated_dir
}
/X2AP_
${
X2AP_RELEASE
}
)
# Warning: if you modify ASN.1 source file to generate new C files, cmake should be re-run instead of make
# Warning: if you modify ASN.1 source file to generate new C files, cmake should be re-run instead of make
execute_process
(
COMMAND
${
OPENAIR_CMAKE
}
/tools/make_asn1c_includes.sh
"
${
X2AP_C_DIR
}
"
"
${
X2AP_ASN_DIR
}
/
${
X2AP_ASN_FILES
}
"
"X2AP_"
-fno-include-deps
execute_process
(
COMMAND
${
OPENAIR_CMAKE
}
/tools/make_asn1c_includes.sh
"
${
X2AP_C_DIR
}
"
"
${
X2AP_ASN_DIR
}
/
${
X2AP_ASN_FILES
}
"
"X2AP_"
-fno-include-deps
RESULT_VARIABLE ret
)
RESULT_VARIABLE ret
)
...
...
openair2/COMMON/x2ap_messages_def.h
View file @
290c2774
...
@@ -47,3 +47,6 @@ MESSAGE_DEF(X2AP_HANDOVER_CANCEL , MESSAGE_PRIORITY_MED, x2ap_han
...
@@ -47,3 +47,6 @@ MESSAGE_DEF(X2AP_HANDOVER_CANCEL , MESSAGE_PRIORITY_MED, x2ap_han
/* handover messages X2AP <-> S1AP */
/* handover messages X2AP <-> S1AP */
MESSAGE_DEF
(
X2AP_UE_CONTEXT_RELEASE
,
MESSAGE_PRIORITY_MED
,
x2ap_ue_context_release_t
,
x2ap_ue_context_release
)
MESSAGE_DEF
(
X2AP_UE_CONTEXT_RELEASE
,
MESSAGE_PRIORITY_MED
,
x2ap_ue_context_release_t
,
x2ap_ue_context_release
)
/*Senb bearer addition messages X2AP <-> RRC */
MESSAGE_DEF
(
X2AP_SENB_ADDITION_REQ
,
MESSAGE_PRIORITY_MED
,
x2ap_senb_addition_req_t
,
x2ap_senb_addition_req
)
openair2/COMMON/x2ap_messages_types.h
View file @
290c2774
...
@@ -28,16 +28,16 @@
...
@@ -28,16 +28,16 @@
//-------------------------------------------------------------------------------------------//
//-------------------------------------------------------------------------------------------//
// Defines to access message fields.
// Defines to access message fields.
#define X2AP_REGISTER_ENB_REQ(mSGpTR) (mSGpTR)->ittiMsg.x2ap_register_enb_req
#define X2AP_REGISTER_ENB_REQ(mSGpTR)
(mSGpTR)->ittiMsg.x2ap_register_enb_req
#define X2AP_SETUP_REQ(mSGpTR) (mSGpTR)->ittiMsg.x2ap_setup_req
#define X2AP_SETUP_REQ(mSGpTR)
(mSGpTR)->ittiMsg.x2ap_setup_req
#define X2AP_SETUP_RESP(mSGpTR) (mSGpTR)->ittiMsg.x2ap_setup_resp
#define X2AP_SETUP_RESP(mSGpTR)
(mSGpTR)->ittiMsg.x2ap_setup_resp
#define X2AP_HANDOVER_REQ(mSGpTR) (mSGpTR)->ittiMsg.x2ap_handover_req
#define X2AP_HANDOVER_REQ(mSGpTR)
(mSGpTR)->ittiMsg.x2ap_handover_req
#define X2AP_HANDOVER_REQ_ACK(mSGpTR) (mSGpTR)->ittiMsg.x2ap_handover_req_ack
#define X2AP_HANDOVER_REQ_ACK(mSGpTR)
(mSGpTR)->ittiMsg.x2ap_handover_req_ack
#define X2AP_REGISTER_ENB_CNF(mSGpTR) (mSGpTR)->ittiMsg.x2ap_register_enb_cnf
#define X2AP_REGISTER_ENB_CNF(mSGpTR)
(mSGpTR)->ittiMsg.x2ap_register_enb_cnf
#define X2AP_DEREGISTERED_ENB_IND(mSGpTR) (mSGpTR)->ittiMsg.x2ap_deregistered_enb_ind
#define X2AP_DEREGISTERED_ENB_IND(mSGpTR)
(mSGpTR)->ittiMsg.x2ap_deregistered_enb_ind
#define X2AP_UE_CONTEXT_RELEASE(mSGpTR) (mSGpTR)->ittiMsg.x2ap_ue_context_release
#define X2AP_UE_CONTEXT_RELEASE(mSGpTR)
(mSGpTR)->ittiMsg.x2ap_ue_context_release
#define X2AP_HANDOVER_CANCEL(mSGpTR) (mSGpTR)->ittiMsg.x2ap_handover_cancel
#define X2AP_HANDOVER_CANCEL(mSGpTR)
(mSGpTR)->ittiMsg.x2ap_handover_cancel
#define X2AP_SENB_ADDITION_REQ(mSGpTR) (mSGpTR)->ittiMsg.x2ap_senb_addition_req
#define X2AP_MAX_NB_ENB_IP_ADDRESS 2
#define X2AP_MAX_NB_ENB_IP_ADDRESS 2
...
@@ -236,4 +236,71 @@ typedef struct x2ap_handover_req_ack_s {
...
@@ -236,4 +236,71 @@ typedef struct x2ap_handover_req_ack_s {
uint32_t
mme_ue_s1ap_id
;
uint32_t
mme_ue_s1ap_id
;
}
x2ap_handover_req_ack_t
;
}
x2ap_handover_req_ack_t
;
typedef
struct
x2ap_senb_addition_req_s
{
/* MeNB UE X2AP ID*/
int
x2_MeNB_UE_id
;
/*SCG Bearer option*/
security_capabilities_t
UE_security_capabilities
;
/*SCG Bearer option*/
uint8_t
SeNB_security_key
[
256
];
/*SeNB UE aggregate maximum bitrate */
ambr_t
SeNB_ue_ambr
;
uint8_t
total_nb_e_rabs_tobeadded
;
uint8_t
nb_sCG_e_rabs_tobeadded
;
uint8_t
nb_split_e_rabs_tobeadded
;
/*list of total e_rabs (SCG or split) to be added*/
//e_rab_setup_t total_e_rabs_tobeadded[S1AP_MAX_E_RAB];
/* list of SCG e_rab to be added by RRC layers */
e_rab_setup_t
e_sCG_rabs_tobeadded
[
S1AP_MAX_E_RAB
];
/* list of split e_rab to be added by RRC layers */
e_rab_setup_t
e_split_rabs_tobeadded
[
S1AP_MAX_E_RAB
];
/* list of SCG e_rab to be added by RRC layers */
e_rab_t
e_sCG_rab_param
[
S1AP_MAX_E_RAB
];
/* list of split e_rab to be added by RRC layers */
e_rab_t
e_split_rab_param
[
S1AP_MAX_E_RAB
];
/*Used for the MeNB to SeNB Container to include the SCG-ConfigInfo as per 36.331*/
uint8_t
rrc_buffer
[
1024
/* arbitrary, big enough */
];
int
rrc_buffer_size
;
}
x2ap_senb_addition_req_t
;
//Panos: Have to see what should be the additional/different elements comparing to handover req ack
typedef
struct
x2ap_senb_addition_req_ack_s
{
int
MeNB_UE_X2_id
;
int
SeNB_UE_X2_id
;
uint8_t
nb_sCG_e_rabs_tobeadded
;
uint8_t
nb_split_e_rabs_tobeadded
;
/* list of SCG e_rab to be added by RRC layers */
e_rab_setup_t
e_sCG_rabs_tobeadded
[
S1AP_MAX_E_RAB
];
/* list of split e_rab to be added by RRC layers */
e_rab_setup_t
e_split_rabs_tobeadded
[
S1AP_MAX_E_RAB
];
uint8_t
rrc_buffer
[
1024
/* arbitrary, big enough */
];
int
rrc_buffer_size
;
}
x2ap_senb_addition_req_ack_t
;
#endif
/* X2AP_MESSAGES_TYPES_H_ */
#endif
/* X2AP_MESSAGES_TYPES_H_ */
openair2/X2AP/MESSAGES/ASN1/R15/x2ap-15.1.0.asn1
View file @
290c2774
...
@@ -4010,7 +4010,7 @@ NRNeighbour-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
@@ -4010,7 +4010,7 @@ NRNeighbour-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
...
}
}
CellAssistanceInformation
::= CHOICE {
CellAssistanceInformation
::= CHOICE {
limited-list Limited-list,
limited-list Limited-list,
full-list ENUMERATED {allServedNRcells, ...},
full-list ENUMERATED {allServedNRcells, ...},
...
...
...
@@ -6094,7 +6094,7 @@ SgNBResourceCoordinationInformationExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
@@ -6094,7 +6094,7 @@ SgNBResourceCoordinationInformationExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
...
}
}
SgNB-UE-X2AP-ID
::= INTEGER (0..4294967295)
SgNB-UE-X2AP-ID
::= INTEGER (0..4294967295)
SIPTOBearerDeactivationIndication ::= ENUMERATED {
SIPTOBearerDeactivationIndication ::= ENUMERATED {
true,
true,
...
...
openair2/X2AP/x2ap_eNB.c
View file @
290c2774
...
@@ -151,7 +151,8 @@ void x2ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_associa
...
@@ -151,7 +151,8 @@ void x2ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_associa
printf
(
"x2ap_eNB_handle_sctp_association_resp at 4
\n
"
);
printf
(
"x2ap_eNB_handle_sctp_association_resp at 4
\n
"
);
dump_trees
();
dump_trees
();
/* Prepare new x2 Setup Request */
/* Prepare new x2 Setup Request */
x2ap_eNB_generate_x2_setup_request
(
instance_p
,
x2ap_enb_data_p
);
x2ap_eNB_generate_ENDC_x2_setup_request
(
instance_p
,
x2ap_enb_data_p
);
//x2ap_eNB_generate_x2_setup_request(instance_p, x2ap_enb_data_p);
}
}
static
static
...
...
openair2/X2AP/x2ap_eNB_decoder.c
View file @
290c2774
...
@@ -59,6 +59,10 @@ static int x2ap_eNB_decode_initiating_message(X2AP_X2AP_PDU_t *pdu)
...
@@ -59,6 +59,10 @@ static int x2ap_eNB_decode_initiating_message(X2AP_X2AP_PDU_t *pdu)
X2AP_INFO
(
"x2ap_eNB_decode_initiating_message!
\n
"
);
X2AP_INFO
(
"x2ap_eNB_decode_initiating_message!
\n
"
);
break
;
break
;
case
X2AP_ProcedureCode_id_endcX2Setup
:
X2AP_INFO
(
"X2AP_ProcedureCode_id_endcX2Setup message!
\n
"
);
break
;
default:
default:
X2AP_ERROR
(
"Unknown procedure ID (%d) for initiating message
\n
"
,
X2AP_ERROR
(
"Unknown procedure ID (%d) for initiating message
\n
"
,
(
int
)
pdu
->
choice
.
initiatingMessage
.
procedureCode
);
(
int
)
pdu
->
choice
.
initiatingMessage
.
procedureCode
);
...
@@ -85,6 +89,10 @@ static int x2ap_eNB_decode_successful_outcome(X2AP_X2AP_PDU_t *pdu)
...
@@ -85,6 +89,10 @@ static int x2ap_eNB_decode_successful_outcome(X2AP_X2AP_PDU_t *pdu)
X2AP_INFO
(
"x2ap_eNB_decode_successfuloutcome_message!
\n
"
);
X2AP_INFO
(
"x2ap_eNB_decode_successfuloutcome_message!
\n
"
);
break
;
break
;
case
X2AP_ProcedureCode_id_endcX2Setup
:
X2AP_INFO
(
"x2ap_eNB_decode_successfuloutcome_message!
\n
"
);
break
;
default:
default:
X2AP_ERROR
(
"Unknown procedure ID (%d) for successfull outcome message
\n
"
,
X2AP_ERROR
(
"Unknown procedure ID (%d) for successfull outcome message
\n
"
,
(
int
)
pdu
->
choice
.
successfulOutcome
.
procedureCode
);
(
int
)
pdu
->
choice
.
successfulOutcome
.
procedureCode
);
...
@@ -126,9 +134,9 @@ int x2ap_eNB_decode_pdu(X2AP_X2AP_PDU_t *pdu, const uint8_t *const buffer, uint3
...
@@ -126,9 +134,9 @@ int x2ap_eNB_decode_pdu(X2AP_X2AP_PDU_t *pdu, const uint8_t *const buffer, uint3
length
,
length
,
0
,
0
,
0
);
0
);
if
(
asn1_xer_print
)
{
//
if (asn1_xer_print) {
xer_fprint
(
stdout
,
&
asn_DEF_X2AP_X2AP_PDU
,
pdu
);
xer_fprint
(
stdout
,
&
asn_DEF_X2AP_X2AP_PDU
,
pdu
);
}
//
}
if
(
dec_ret
.
code
!=
RC_OK
)
{
if
(
dec_ret
.
code
!=
RC_OK
)
{
X2AP_ERROR
(
"Failed to decode pdu
\n
"
);
X2AP_ERROR
(
"Failed to decode pdu
\n
"
);
...
...
openair2/X2AP/x2ap_eNB_defs.h
View file @
290c2774
...
@@ -175,6 +175,12 @@ typedef struct x2ap_eNB_instance_s {
...
@@ -175,6 +175,12 @@ typedef struct x2ap_eNB_instance_s {
uint32_t
fdd_earfcn_UL
[
MAX_NUM_CCs
];
uint32_t
fdd_earfcn_UL
[
MAX_NUM_CCs
];
uint32_t
subframeAssignment
[
MAX_NUM_CCs
];
uint32_t
subframeAssignment
[
MAX_NUM_CCs
];
uint32_t
specialSubframe
[
MAX_NUM_CCs
];
uint32_t
specialSubframe
[
MAX_NUM_CCs
];
//#ifdef Rel15
uint32_t
tdd_nRARFCN
[
MAX_NUM_CCs
];
int16_t
nr_SCS
[
MAX_NUM_CCs
];
//#endif
int
num_cc
;
int
num_cc
;
net_ip_address_t
target_enb_x2_ip_address
[
X2AP_MAX_NB_ENB_IP_ADDRESS
];
net_ip_address_t
target_enb_x2_ip_address
[
X2AP_MAX_NB_ENB_IP_ADDRESS
];
...
...
openair2/X2AP/x2ap_eNB_encoder.c
View file @
290c2774
...
@@ -44,9 +44,9 @@ int x2ap_eNB_encode_pdu(X2AP_X2AP_PDU_t *pdu, uint8_t **buffer, uint32_t *len)
...
@@ -44,9 +44,9 @@ int x2ap_eNB_encode_pdu(X2AP_X2AP_PDU_t *pdu, uint8_t **buffer, uint32_t *len)
DevAssert
(
buffer
!=
NULL
);
DevAssert
(
buffer
!=
NULL
);
DevAssert
(
len
!=
NULL
);
DevAssert
(
len
!=
NULL
);
if
(
asn1_xer_print
)
{
//
if (asn1_xer_print) {
xer_fprint
(
stdout
,
&
asn_DEF_X2AP_X2AP_PDU
,
(
void
*
)
pdu
);
xer_fprint
(
stdout
,
&
asn_DEF_X2AP_X2AP_PDU
,
(
void
*
)
pdu
);
}
//
}
encoded
=
aper_encode_to_new_buffer
(
&
asn_DEF_X2AP_X2AP_PDU
,
0
,
pdu
,
(
void
**
)
buffer
);
encoded
=
aper_encode_to_new_buffer
(
&
asn_DEF_X2AP_X2AP_PDU
,
0
,
pdu
,
(
void
**
)
buffer
);
...
...
openair2/X2AP/x2ap_eNB_generate_messages.c
View file @
290c2774
This diff is collapsed.
Click to expand it.
openair2/X2AP/x2ap_eNB_generate_messages.h
View file @
290c2774
...
@@ -60,4 +60,14 @@ int x2ap_eNB_generate_x2_handover_cancel (x2ap_eNB_instance_t *instance_p, x2ap_
...
@@ -60,4 +60,14 @@ int x2ap_eNB_generate_x2_handover_cancel (x2ap_eNB_instance_t *instance_p, x2ap_
int
x2_ue_id
,
int
x2_ue_id
,
x2ap_handover_cancel_cause_t
cause
);
x2ap_handover_cancel_cause_t
cause
);
int
x2ap_eNB_generate_senb_addition_request
(
x2ap_eNB_instance_t
*
instance_p
,
x2ap_eNB_data_t
*
x2ap_eNB_data_p
/* TODO: pass needed parameters */
);
int
x2ap_eNB_generate_senb_addition_request_ack
(
x2ap_eNB_instance_t
*
instance_p
,
x2ap_eNB_data_t
*
x2ap_eNB_data_p
,
x2ap_senb_addition_req_ack_t
*
x2ap_addition_req_ack
);
int
x2ap_eNB_generate_ENDC_x2_setup_request
(
x2ap_eNB_instance_t
*
instance_p
,
x2ap_eNB_data_t
*
x2ap_eNB_data_p
);
int
x2ap_gNB_generate_ENDC_x2_setup_response
(
x2ap_eNB_instance_t
*
instance_p
,
x2ap_eNB_data_t
*
x2ap_eNB_data_p
);
#endif
/* X2AP_ENB_GENERATE_MESSAGES_H_ */
#endif
/* X2AP_ENB_GENERATE_MESSAGES_H_ */
openair2/X2AP/x2ap_eNB_handler.c
View file @
290c2774
This diff is collapsed.
Click to expand it.
openair3/UTILS/conversions.h
View file @
290c2774
...
@@ -371,6 +371,26 @@ do { \
...
@@ -371,6 +371,26 @@ do { \
(bITsTRING)->bits_unused = 4; \
(bITsTRING)->bits_unused = 4; \
} while(0)
} while(0)
/*
#define INT16_TO_3_BYTE_BUFFER(x, buf) \
do { \
(buf)[0] = 0x00; \
(buf)[1] = (x) >> 8; \
(buf)[2] = (x); \
} while(0)
*/
#define NR_FIVEGS_TAC_ID_TO_BIT_STRING(x, aSN) \
do { \
(aSN)->buf = calloc(3, sizeof(uint8_t)); \
(aSN)->size = 3; \
(aSN)->buf[0] = 0x00; \
(aSN)->buf[1] = (x) >> 8; \
(aSN)->buf[2] = (x); \
} while(0)
/* TS 38.473 v15.2.1 section 9.3.1.55:
/* TS 38.473 v15.2.1 section 9.3.1.55:
* MaskedIMEISV is BIT_STRING(64)
* MaskedIMEISV is BIT_STRING(64)
*/
*/
...
...
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