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
289fdfe3
Commit
289fdfe3
authored
Aug 29, 2024
by
Guido Casati
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use F1AP Setup Failure enc/dec lib in stack
parent
6146c470
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
17 additions
and
74 deletions
+17
-74
openair2/F1AP/f1ap_cu_interface_management.c
openair2/F1AP/f1ap_cu_interface_management.c
+10
-58
openair2/F1AP/f1ap_du_interface_management.c
openair2/F1AP/f1ap_du_interface_management.c
+7
-16
No files found.
openair2/F1AP/f1ap_cu_interface_management.c
View file @
289fdfe3
...
...
@@ -126,70 +126,22 @@ int CU_send_F1_SETUP_RESPONSE(sctp_assoc_t assoc_id, f1ap_setup_resp_t *f1ap_set
return
0
;
}
/**
* @brief F1 Setup Failure encoding and transmission
*/
int
CU_send_F1_SETUP_FAILURE
(
sctp_assoc_t
assoc_id
,
const
f1ap_setup_failure_t
*
fail
)
{
LOG_D
(
F1AP
,
"CU_send_F1_SETUP_FAILURE
\n
"
);
F1AP_F1AP_PDU_t
pdu
=
{
0
};
uint8_t
*
buffer
=
NULL
;
uint32_t
len
=
0
;
/* Create */
/* 0. Message Type */
asn1cCalloc
(
pdu
.
choice
.
unsuccessfulOutcome
,
UnsuccessfulOutcome
);
pdu
.
present
=
F1AP_F1AP_PDU_PR_unsuccessfulOutcome
;
UnsuccessfulOutcome
->
procedureCode
=
F1AP_ProcedureCode_id_F1Setup
;
UnsuccessfulOutcome
->
criticality
=
F1AP_Criticality_reject
;
UnsuccessfulOutcome
->
value
.
present
=
F1AP_UnsuccessfulOutcome__value_PR_F1SetupFailure
;
F1AP_F1SetupFailure_t
*
out
=
&
pdu
.
choice
.
unsuccessfulOutcome
->
value
.
choice
.
F1SetupFailure
;
/* mandatory */
/* c1. Transaction ID (integer value)*/
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_F1SetupFailureIEs_t
,
ie1
);
ie1
->
id
=
F1AP_ProtocolIE_ID_id_TransactionID
;
ie1
->
criticality
=
F1AP_Criticality_reject
;
ie1
->
value
.
present
=
F1AP_F1SetupFailureIEs__value_PR_TransactionID
;
ie1
->
value
.
choice
.
TransactionID
=
F1AP_get_next_transaction_identifier
(
0
,
0
);
/* mandatory */
/* c2. Cause */
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_F1SetupFailureIEs_t
,
ie2
);
ie2
->
id
=
F1AP_ProtocolIE_ID_id_Cause
;
ie2
->
criticality
=
F1AP_Criticality_ignore
;
ie2
->
value
.
present
=
F1AP_F1SetupFailureIEs__value_PR_Cause
;
ie2
->
value
.
choice
.
Cause
.
present
=
F1AP_Cause_PR_radioNetwork
;
ie2
->
value
.
choice
.
Cause
.
choice
.
radioNetwork
=
F1AP_CauseRadioNetwork_unspecified
;
/* optional */
/* c3. TimeToWait */
if
(
0
)
{
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_F1SetupFailureIEs_t
,
ie3
);
ie3
->
id
=
F1AP_ProtocolIE_ID_id_TimeToWait
;
ie3
->
criticality
=
F1AP_Criticality_ignore
;
ie3
->
value
.
present
=
F1AP_F1SetupFailureIEs__value_PR_TimeToWait
;
ie3
->
value
.
choice
.
TimeToWait
=
F1AP_TimeToWait_v10s
;
}
/* optional */
/* c4. CriticalityDiagnostics*/
if
(
0
)
{
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_F1SetupFailureIEs_t
,
ie4
);
ie4
->
id
=
F1AP_ProtocolIE_ID_id_CriticalityDiagnostics
;
ie4
->
criticality
=
F1AP_Criticality_ignore
;
ie4
->
value
.
present
=
F1AP_F1SetupFailureIEs__value_PR_CriticalityDiagnostics
;
asn1cCallocOne
(
ie4
->
value
.
choice
.
CriticalityDiagnostics
.
procedureCode
,
F1AP_ProcedureCode_id_UEContextSetup
);
asn1cCallocOne
(
ie4
->
value
.
choice
.
CriticalityDiagnostics
.
triggeringMessage
,
F1AP_TriggeringMessage_initiating_message
);
asn1cCallocOne
(
ie4
->
value
.
choice
.
CriticalityDiagnostics
.
procedureCriticality
,
F1AP_Criticality_reject
);
asn1cCallocOne
(
ie4
->
value
.
choice
.
CriticalityDiagnostics
.
transactionID
,
0
);
}
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
uint8_t
*
buffer
=
NULL
;
uint32_t
len
=
0
;
/* Encode F1 Setup Failure */
F1AP_F1AP_PDU_t
*
pdu
=
encode_f1ap_setup_failure
(
fail
);
if
(
f1ap_encode_pdu
(
pdu
,
&
buffer
,
&
len
)
<
0
)
{
LOG_E
(
F1AP
,
"Failed to encode F1 setup failure
\n
"
);
ASN_STRUCT_FREE
(
asn_DEF_F1AP_F1AP_PDU
,
pdu
);
return
-
1
;
}
ASN_STRUCT_RESET
(
asn_DEF_F1AP_F1AP_PDU
,
&
pdu
);
ASN_STRUCT_FREE
(
asn_DEF_F1AP_F1AP_PDU
,
pdu
);
f1ap_itti_send_sctp_data_req
(
assoc_id
,
buffer
,
len
);
return
0
;
}
...
...
openair2/F1AP/f1ap_du_interface_management.c
View file @
289fdfe3
...
...
@@ -337,25 +337,16 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance, sctp_assoc_t assoc_id, uint
return
0
;
}
// SETUP FAILURE
/**
* @brief F1 Setup Failure handler (DU)
*/
int
DU_handle_F1_SETUP_FAILURE
(
instance_t
instance
,
sctp_assoc_t
assoc_id
,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
)
{
F1AP_F1SetupFailure_t
*
out
;
F1AP_F1SetupFailureIEs_t
*
ie
;
f1ap_setup_failure_t
fail
=
{
0
};
out
=
&
pdu
->
choice
.
unsuccessfulOutcome
->
value
.
choice
.
F1SetupFailure
;
/* Transaction ID */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_F1SetupFailureIEs_t
,
ie
,
out
,
F1AP_ProtocolIE_ID_id_TransactionID
,
true
);
/* Cause */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_F1SetupFailureIEs_t
,
ie
,
out
,
F1AP_ProtocolIE_ID_id_Cause
,
true
);
if
(
0
)
{
/* TimeToWait */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_F1SetupFailureIEs_t
,
ie
,
out
,
F1AP_ProtocolIE_ID_id_TimeToWait
,
true
);
f1ap_setup_failure_t
fail
;
if
(
!
decode_f1ap_setup_failure
(
pdu
,
&
fail
))
{
LOG_E
(
F1AP
,
"Failed to decode F1AP Setup Failure
\n
"
);
return
-
1
;
}
f1_setup_failure
(
&
fail
);
return
0
;
}
...
...
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