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
3058d2fc
Commit
3058d2fc
authored
May 10, 2022
by
Sakthivel Velumani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bearer context setup response message
parent
b911e9db
Changes
3
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
337 additions
and
76 deletions
+337
-76
openair2/E1AP/e1ap.c
openair2/E1AP/e1ap.c
+236
-72
openair2/E1AP/e1ap_common.c
openair2/E1AP/e1ap_common.c
+39
-0
openair2/E1AP/e1ap_common.h
openair2/E1AP/e1ap_common.h
+62
-4
No files found.
openair2/E1AP/e1ap.c
View file @
3058d2fc
This diff is collapsed.
Click to expand it.
openair2/E1AP/e1ap_common.c
View file @
3058d2fc
...
...
@@ -77,3 +77,42 @@ E1AP_TransactionID_t E1AP_get_next_transaction_identifier() {
return
genTransacId
;
}
int
e1ap_decode_pdu
(
E1AP_E1AP_PDU_t
*
pdu
,
const
uint8_t
*
const
buffer
,
uint32_t
length
)
{
asn_dec_rval_t
dec_ret
;
DevAssert
(
buffer
!=
NULL
);
dec_ret
=
aper_decode
(
NULL
,
&
asn_DEF_F1AP_F1AP_PDU
,
(
void
**
)
&
pdu
,
buffer
,
length
,
0
,
0
);
if
(
asn1_decoder_xer_print
)
{
LOG_E
(
F1AP
,
"----------------- ASN1 DECODER PRINT START-----------------
\n
"
);
xer_fprint
(
stdout
,
&
asn_DEF_E1AP_E1AP_PDU
,
pdu
);
LOG_E
(
F1AP
,
"----------------- ASN1 DECODER PRINT END -----------------
\n
"
);
}
if
(
dec_ret
.
code
!=
RC_OK
)
{
AssertFatal
(
1
==
0
,
"Failed to decode pdu
\n
"
);
return
-
1
;
}
switch
(
pdu
->
present
)
{
case
E1AP_E1AP_PDU_PR_initiatingMessage
:
return
e1ap_decode_initiating_message
(
pdu
);
case
E1AP_E1AP_PDU_PR_successfulOutcome
:
return
e1ap_decode_successful_outcome
(
pdu
);
case
E1AP_E1AP_PDU_PR_unsuccessfulOutcome
:
return
e1ap_decode_unsuccessful_outcome
(
pdu
);
default:
LOG_E
(
E1AP
,
"Unknown presence (%d) or not implemented
\n
"
,
(
int
)
pdu
->
present
);
break
;
}
return
-
1
;
}
openair2/E1AP/e1ap_common.h
View file @
3058d2fc
...
...
@@ -40,7 +40,9 @@ typedef int (*e1ap_message_processing_t)(
}
;
typedef
struct
PLMN_ID_s
{
int
id
;
int
mcc
;
int
mnc
;
int
mnc_digit_length
;
}
PLMN_ID_t
;
typedef
struct
e1ap_setup_req_s
{
...
...
@@ -55,8 +57,13 @@ typedef struct e1ap_setup_req_s {
uint16_t
default_sctp_stream_id
;
f1ap_net_ip_address_t
CUUP_e1_ip_address
;
f1ap_net_ip_address_t
CUCP_e1_ip_address
;
E1AP_CNSupport_t
cn_support
;
}
e1ap_setup_req_t
;
typedef
struct
e1ap_setup_resp_s
{
long
transac_id
;
}
e1ap_setup_resp_t
;
typedef
struct
cell_group_s
{
long
id
;
}
cell_group_t
;
...
...
@@ -83,6 +90,9 @@ typedef struct qos_flow_to_setup_s {
long
packetDelayBudget
;
long
packetError_scalar
;
long
packetError_exponent
;
E1AP_PriorityLevel_t
priorityLevel
;
E1AP_Pre_emptionCapability_t
pre_emptionCapability
;
E1AP_Pre_emptionVulnerability_t
pre_emptionVulnerability
;
}
qos_flow_to_setup_t
;
typedef
struct
DRB_nGRAN_to_setup_s
{
...
...
@@ -94,9 +104,6 @@ typedef struct DRB_nGRAN_to_setup_s {
cell_group_t
cellGroupList
[
MAX_NUM_CELL_GROUPS
];
int
numQosFlowSetup
;
qos_flow_to_setup_t
qosFlows
[
MAX_NUM_QOS_FLOWS
];
E1AP_PriorityLevel_t
priorityLevel
;
E1AP_Pre_emptionCapability_t
pre_emptionCapability
;
E1AP_Pre_emptionVulnerability_t
pre_emptionVulnerability
;
}
DRB_nGRAN_to_setup_t
;
typedef
struct
pdu_session_to_setup_s
{
...
...
@@ -123,10 +130,61 @@ typedef struct e1ap_bearer_setup_req_s {
pdu_session_to_setup_t
pduSession
[
MAX_NUM_PDU_SESSIONS
];
}
e1ap_bearer_setup_req_t
;
typedef
struct
up_params_s
{
in_addr_t
tlAddress
;
long
teId
;
}
up_params_t
;
typedef
struct
drb_setup_s
{
int
drbId
;
in_addr_t
tlAddress
;
ling
teId
;
int
numUpParam
;
up_params_t
UpParamList
[
MAX_NUM_UP_PARAM
];
}
drb_setup_t
;
typedef
struct
qos_flow_setup_s
{
long
id
;
}
qos_flow_setup_t
;
typedef
struct
DRB_nGRAN_setup_s
{
long
id
;
int
numUpParam
;
up_params_t
UpParamList
[
MAX_NUM_UP_PARAM
];
int
numQosFlowSetup
;
qos_flow_setup_t
qosFlows
[
MAX_NUM_QOS_FLOWS
];
}
DRB_nGRAN_setup_t
;
typedef
struct
DRB_nGRAN_failed_s
{
long
id
;
long
cause_type
;
long
cause
;
}
DRB_nGRAN_failed_t
;
typedef
struct
pdu_session_setup_s
{
long
id
;
in_addr_t
tlAddress
;
long
teId
;
int
numDRBSetup
;
DRB_nGRAN_setup_t
DRBnGRanList
[
MAX_NUM_NGRAN_DRB
];
int
numDRBFailed
;
DRB_nGRAN_failed_t
DRBnGRanFailedList
[
MAX_NUM_NGRAN_DRB
];
}
pdu_session_setup_t
;
typedef
struct
e1ap_bearer_setup_resp_s
{
uint64_t
gNB_cu_cp_ue_id
;
uint64_t
gNB_cu_up_ue_id
;
int
numDRBs
;
drb_setup_t
DRBList
[
MAX_NUM_DRBS
];
int
numPDUSessions
;
}
e1ap_bearer_setup_resp_t
;
typedef
struct
e1ap_upcp_inst_s
{
uint32_t
assoc_id
;
e1ap_setup_req_t
setupReq
;
e1ap_bearer_setup_req_t
bearerSetupReq
;
e1ap_bearer_setup_resp_t
bearerSetupResp
;
}
e1ap_upcp_inst_t
;
typedef
enum
{
...
...
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