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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
a1b2d222
Commit
a1b2d222
authored
Oct 08, 2021
by
matzakos
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Generation of UE context modification response at F1AP layer of the DU
-Fix some indentations
parent
f068fb4e
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
212 additions
and
159 deletions
+212
-159
openair2/F1AP/f1ap_decoder.c
openair2/F1AP/f1ap_decoder.c
+4
-0
openair2/F1AP/f1ap_du_task.c
openair2/F1AP/f1ap_du_task.c
+1
-1
openair2/F1AP/f1ap_du_ue_context_management.c
openair2/F1AP/f1ap_du_ue_context_management.c
+206
-157
openair2/F1AP/f1ap_du_ue_context_management.h
openair2/F1AP/f1ap_du_ue_context_management.h
+1
-1
No files found.
openair2/F1AP/f1ap_decoder.c
View file @
a1b2d222
...
...
@@ -127,6 +127,10 @@ static int f1ap_decode_successful_outcome(F1AP_F1AP_PDU_t *pdu) {
LOG_I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextSetup
\n
"
,
__func__
);
break
;
case
F1AP_ProcedureCode_id_UEContextModification
:
LOG_I
(
F1AP
,
"%s(): F1AP_ProcedureCode_id_UEContextModification
\n
"
,
__func__
);
break
;
default:
LOG_E
(
F1AP
,
"Unknown procedure ID (%d) for successfull outcome message
\n
"
,
(
int
)
pdu
->
choice
.
successfulOutcome
->
procedureCode
);
...
...
openair2/F1AP/f1ap_du_task.c
View file @
a1b2d222
...
...
@@ -211,7 +211,7 @@ void *F1AP_DU_task(void *arg) {
case
F1AP_UE_CONTEXT_MODIFICATION_RESP
:
LOG_I
(
F1AP
,
"DU task received itti message from RRC for F1AP_UE_CONTEXT_MODIFICATION_RESP message generation
\n
"
);
//
DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(myInstance, &F1AP_UE_CONTEXT_MODIFICATION_RESP(msg));
DU_send_UE_CONTEXT_MODIFICATION_RESPONSE
(
myInstance
,
&
F1AP_UE_CONTEXT_MODIFICATION_RESP
(
msg
));
break
;
case
F1AP_UE_CONTEXT_RELEASE_REQ
:
// from MAC
...
...
openair2/F1AP/f1ap_du_ue_context_management.c
View file @
a1b2d222
...
...
@@ -253,7 +253,7 @@ int DU_handle_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
return
0
;
}
int
DU_send_UE_CONTEXT_SETUP_RESPONSE
(
instance_t
instance
,
f1ap_ue_context_setup_t
*
re
q
)
{
int
DU_send_UE_CONTEXT_SETUP_RESPONSE
(
instance_t
instance
,
f1ap_ue_context_setup_t
*
re
sp
)
{
F1AP_F1AP_PDU_t
pdu
=
{
0
};
F1AP_UEContextSetupResponse_t
*
out
;
uint8_t
*
buffer
=
NULL
;
...
...
@@ -272,26 +272,25 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance, f1ap_ue_context_setup
ie1
->
id
=
F1AP_ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID
;
ie1
->
criticality
=
F1AP_Criticality_reject
;
ie1
->
value
.
present
=
F1AP_UEContextSetupResponseIEs__value_PR_GNB_CU_UE_F1AP_ID
;
ie1
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
re
q
->
gNB_CU_ue_id
;
ie1
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
re
sp
->
gNB_CU_ue_id
;
/* mandatory */
/* c2. GNB_DU_UE_F1AP_ID */
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_UEContextSetupResponseIEs_t
,
ie2
);
ie2
->
id
=
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
;
ie2
->
criticality
=
F1AP_Criticality_reject
;
ie2
->
value
.
present
=
F1AP_UEContextSetupResponseIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie2
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_get_du_ue_f1ap_id
(
DUtype
,
instance
,
re
q
->
rnti
);
ie2
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_get_du_ue_f1ap_id
(
DUtype
,
instance
,
re
sp
->
rnti
);
/* mandatory */
/* c3. DUtoCURRCInformation */
//if (0) {
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_UEContextSetupResponseIEs_t
,
ie3
);
ie3
->
id
=
F1AP_ProtocolIE_ID_id_DUtoCURRCInformation
;
ie3
->
criticality
=
F1AP_Criticality_reject
;
ie3
->
value
.
present
=
F1AP_UEContextSetupResponseIEs__value_PR_DUtoCURRCInformation
;
{
/* cellGroupConfig */
OCTET_STRING_fromBuf
(
&
ie3
->
value
.
choice
.
DUtoCURRCInformation
.
cellGroupConfig
,
(
const
char
*
)
req
->
du_to_cu_rrc_information
,
req
->
du_to_cu_rrc_information_length
);
OCTET_STRING_fromBuf
(
&
ie3
->
value
.
choice
.
DUtoCURRCInformation
.
cellGroupConfig
,
(
const
char
*
)
resp
->
du_to_cu_rrc_information
,
resp
->
du_to_cu_rrc_information_length
);
/* OPTIONAL */
/* measGapConfig */
...
...
@@ -307,7 +306,6 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance, f1ap_ue_context_setup
OCTET_STRING_fromBuf
(
tmp
,
"asdsa"
,
strlen
(
"asdsa"
));
}
}
//}
/* optional */
/* c4. C_RNTI */
...
...
@@ -317,7 +315,7 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance, f1ap_ue_context_setup
ie4
->
criticality
=
F1AP_Criticality_ignore
;
ie4
->
value
.
present
=
F1AP_UEContextSetupResponseIEs__value_PR_C_RNTI
;
//C_RNTI_TO_BIT_STRING(rntiP, &ie->value.choice.C_RNTI);
ie4
->
value
.
choice
.
C_RNTI
=
re
q
->
rnti
;
ie4
->
value
.
choice
.
C_RNTI
=
re
sp
->
rnti
;
LOG_E
(
F1AP
,
"RNTI to code!
\n
"
);
}
...
...
@@ -344,30 +342,30 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance, f1ap_ue_context_setup
/* mandatory */
/* c7. DRBs_Setup_List */
if
(
re
q
->
drbs_to_be_setup_length
>
0
){
if
(
re
sp
->
drbs_to_be_setup_length
>
0
){
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_UEContextSetupResponseIEs_t
,
ie7
);
ie7
->
id
=
F1AP_ProtocolIE_ID_id_DRBs_Setup_List
;
ie7
->
criticality
=
F1AP_Criticality_ignore
;
ie7
->
value
.
present
=
F1AP_UEContextSetupResponseIEs__value_PR_DRBs_Setup_List
;
for
(
int
i
=
0
;
i
<
req
->
drbs_to_be_setup_length
;
i
++
)
{
for
(
int
i
=
0
;
i
<
resp
->
drbs_to_be_setup_length
;
i
++
)
{
//
asn1cSequenceAdd
(
ie7
->
value
.
choice
.
DRBs_Setup_List
.
list
,
F1AP_DRBs_Setup_ItemIEs_t
,
drbs_setup_item_ies
);
drbs_setup_item_ies
->
id
=
F1AP_ProtocolIE_ID_id_DRBs_Setup_Item
;
drbs_setup_item_ies
->
criticality
=
F1AP_Criticality_ignore
;
drbs_setup_item_ies
->
value
.
present
=
F1AP_SRBs_FailedToBeSetup_ItemIEs__value_PR_SRBs_FailedToBe
Setup_Item
;
drbs_setup_item_ies
->
value
.
present
=
F1AP_DRBs_Setup_ItemIEs__value_PR_DRBs_
Setup_Item
;
/* 7.1 DRBs_Setup_Item */
/* ADD */
F1AP_DRBs_Setup_Item_t
*
drbs_setup_item
=&
drbs_setup_item_ies
->
value
.
choice
.
DRBs_Setup_Item
;
/* dRBID */
drbs_setup_item
->
dRBID
=
req
->
drbs_to_be_setup
[
i
].
drb_id
;
drbs_setup_item
->
dRBID
=
resp
->
drbs_to_be_setup
[
i
].
drb_id
;
/* OPTIONAL */
/* lCID */
//drbs_setup_item.lCID = (F1AP_LCID_t *)calloc(1, sizeof(F1AP_LCID_t));
//drbs_setup_item.lCID = 1L;
for
(
int
j
=
0
;
j
<
req
->
drbs_to_be_setup
[
i
].
up_dl_tnl_length
;
j
++
)
{
for
(
int
j
=
0
;
j
<
resp
->
drbs_to_be_setup
[
i
].
up_dl_tnl_length
;
j
++
)
{
/* ADD */
asn1cSequenceAdd
(
drbs_setup_item
->
dLUPTNLInformation_ToBeSetup_List
.
list
,
F1AP_DLUPTNLInformation_ToBeSetup_Item_t
,
dLUPTNLInformation_ToBeSetup_Item
);
...
...
@@ -381,9 +379,10 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance, f1ap_ue_context_setup
TRANSPORT_LAYER_ADDRESS_IPv4_TO_BIT_STRING
(
addr
.
sin_addr
.
s_addr
,
&
gTPTunnel
->
transportLayerAddress
);
/* gTP_TEID */
INT32_TO_OCTET_STRING
(
req
->
drbs_to_be_setup
[
i
].
up_dl_tnl
[
j
].
teid
,
&
gTPTunnel
->
gTP_TEID
);
INT32_TO_OCTET_STRING
(
resp
->
drbs_to_be_setup
[
i
].
up_dl_tnl
[
j
].
teid
,
&
gTPTunnel
->
gTP_TEID
);
}
// for j
}
// for i
}
/* mandatory */
...
...
@@ -415,7 +414,6 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance, f1ap_ue_context_setup
case
F1AP_Cause_PR_radioNetwork
:
tmp
->
choice
.
radioNetwork
=
F1AP_CauseRadioNetwork_unspecified
;
break
;
case
F1AP_Cause_PR_transport
:
tmp
->
choice
.
transport
=
F1AP_CauseTransport_unspecified
;
break
;
...
...
@@ -534,13 +532,13 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance, f1ap_ue_context_setup
/* mandatory */
/* c11. SRBs_Setup_List */
if
(
re
q
->
srbs_to_be_setup_length
>
0
){
if
(
re
sp
->
srbs_to_be_setup_length
>
0
){
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_UEContextSetupResponseIEs_t
,
ie11
);
ie11
->
id
=
F1AP_ProtocolIE_ID_id_SRBs_Setup_List
;
ie11
->
criticality
=
F1AP_Criticality_ignore
;
ie11
->
value
.
present
=
F1AP_UEContextSetupResponseIEs__value_PR_SRBs_Setup_List
;
for
(
int
i
=
0
;
i
<
re
q
->
srbs_to_be_setup_length
;
i
++
)
{
//
for
(
int
i
=
0
;
i
<
re
sp
->
srbs_to_be_setup_length
;
i
++
)
{
//
asn1cSequenceAdd
(
ie11
->
value
.
choice
.
SRBs_Setup_List
.
list
,
F1AP_SRBs_Setup_ItemIEs_t
,
srbs_setup_item_ies
);
srbs_setup_item_ies
->
id
=
F1AP_ProtocolIE_ID_id_SRBs_Setup_Item
;
...
...
@@ -550,7 +548,7 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance, f1ap_ue_context_setup
/* ADD */
F1AP_SRBs_Setup_Item_t
*
srbs_setup_item
=&
srbs_setup_item_ies
->
value
.
choice
.
SRBs_Setup_Item
;
/* sRBID */
srbs_setup_item
->
sRBID
=
re
q
->
srbs_to_be_setup
[
i
].
srb_id
;
srbs_setup_item
->
sRBID
=
re
sp
->
srbs_to_be_setup
[
i
].
srb_id
;
}
}
...
...
@@ -925,8 +923,8 @@ int DU_handle_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance,
/* mandatory */
/* GNB_DU_UE_F1AP_ID */
F1AP_UEContext
Setup
RequestIEs_t
*
ieDU_UE
;
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_UEContext
Setup
RequestIEs_t
,
ieDU_UE
,
container
,
F1AP_UEContext
Modification
RequestIEs_t
*
ieDU_UE
;
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_UEContext
Modification
RequestIEs_t
,
ieDU_UE
,
container
,
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
,
true
);
f1ap_ue_context_modification_req
->
gNB_DU_ue_id
=
ieDU_UE
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
;
f1ap_ue_context_modification_req
->
rnti
=
f1ap_get_rnti_by_du_id
(
DUtype
,
instance
,
f1ap_ue_context_modification_req
->
gNB_DU_ue_id
);
...
...
@@ -959,7 +957,7 @@ int DU_handle_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance,
/* DRB */
F1AP_UEContextModificationRequestIEs_t
*
ieDrb
;
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_UEContextModificationRequestIEs_t
,
ieDrb
,
container
,
F1AP_ProtocolIE_ID_id_DRBs_ToBeSetup_List
,
false
);
F1AP_ProtocolIE_ID_id_DRBs_ToBeSetup
Mod
_List
,
false
);
if
(
ieDrb
!=
NULL
)
{
f1ap_ue_context_modification_req
->
drbs_to_be_setup_length
=
ieDrb
->
value
.
choice
.
DRBs_ToBeSetupMod_List
.
list
.
count
;
...
...
@@ -1059,7 +1057,7 @@ int DU_handle_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance,
}
//void DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(F1AP_UEContextModificationResponse_t *UEContextModificationResponse) {
int
DU_send_UE_CONTEXT_MODIFICATION_RESPONSE
(
instance_t
instance
)
{
int
DU_send_UE_CONTEXT_MODIFICATION_RESPONSE
(
instance_t
instance
,
f1ap_ue_context_setup_t
*
resp
)
{
F1AP_F1AP_PDU_t
pdu
=
{
0
};
F1AP_UEContextModificationResponse_t
*
out
;
uint8_t
*
buffer
=
NULL
;
...
...
@@ -1078,14 +1076,14 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
ie1
->
id
=
F1AP_ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID
;
ie1
->
criticality
=
F1AP_Criticality_reject
;
ie1
->
value
.
present
=
F1AP_UEContextModificationResponseIEs__value_PR_GNB_CU_UE_F1AP_ID
;
ie1
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
126L
;
ie1
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
=
resp
->
gNB_CU_ue_id
;
/* mandatory */
/* c2. GNB_DU_UE_F1AP_ID */
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_UEContextModificationResponseIEs_t
,
ie2
);
ie2
->
id
=
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
;
ie2
->
criticality
=
F1AP_Criticality_reject
;
ie2
->
value
.
present
=
F1AP_UEContextModificationResponseIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie2
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
651L
;
ie2
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
f1ap_get_du_ue_f1ap_id
(
DUtype
,
instance
,
resp
->
rnti
)
;
/* optional */
/* c3. ResourceCoordinationTransferContainer */
...
...
@@ -1098,61 +1096,80 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
strlen
(
"asdsa1d32sa1d31asd31as"
));
}
/* optional */
/* c4. DUtoCURRCInformation */
if
(
0
)
{
/* mandatory */
/* c3. DUtoCURRCInformation */
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_UEContextModificationResponseIEs_t
,
ie4
);
ie4
->
id
=
F1AP_ProtocolIE_ID_id_DUtoCURRCInformation
;
ie4
->
criticality
=
F1AP_Criticality_reject
;
ie4
->
value
.
present
=
F1AP_UEContextModificationResponseIEs__value_PR_DUtoCURRCInformation
;
OCTET_STRING_fromBuf
(
&
ie4
->
value
.
choice
.
DUtoCURRCInformation
.
cellGroupConfig
,
"asdsa1d32sa1d31asd31as"
,
strlen
(
"asdsa1d32sa1d31asd31as"
));
{
/* cellGroupConfig */
OCTET_STRING_fromBuf
(
&
ie4
->
value
.
choice
.
DUtoCURRCInformation
.
cellGroupConfig
,
(
const
char
*
)
resp
->
du_to_cu_rrc_information
,
resp
->
du_to_cu_rrc_information_length
);
/* OPTIONAL */
if
(
1
)
{
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_UEContextModificationResponseIEs_t
,
ie41
);
ie41
->
value
.
choice
.
DUtoCURRCInformation
.
measGapConfig
=
(
F1AP_MeasGapConfig_t
*
)
calloc
(
1
,
sizeof
(
F1AP_MeasGapConfig_t
));
OCTET_STRING_fromBuf
(
ie41
->
value
.
choice
.
DUtoCURRCInformation
.
measGapConfig
,
"asdsa1d32sa1d31asd31as"
,
strlen
(
"asdsa1d32sa1d31asd31as"
));
/* measGapConfig */
if
(
0
)
{
asn1cCalloc
(
ie4
->
value
.
choice
.
DUtoCURRCInformation
.
measGapConfig
,
tmp
);
OCTET_STRING_fromBuf
(
tmp
,
"asdsa"
,
strlen
(
"asdsa"
));
}
/* OPTIONAL */
/* requestedP_MaxFR1 */
if
(
0
)
{
asn1cCalloc
(
ie4
->
value
.
choice
.
DUtoCURRCInformation
.
requestedP_MaxFR1
,
tmp
);
OCTET_STRING_fromBuf
(
tmp
,
"asdsa"
,
strlen
(
"asdsa"
));
}
}
/* mandatory */
/* c5. DRBs_SetupMod_List */
/* optional */
/* c5. DRBs_Setup_List */
if
(
resp
->
drbs_to_be_setup_length
>
0
){
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_UEContextModificationResponseIEs_t
,
ie5
);
ie5
->
id
=
F1AP_ProtocolIE_ID_id_DRBs_SetupMod_List
;
ie5
->
criticality
=
F1AP_Criticality_
reject
;
ie5
->
criticality
=
F1AP_Criticality_
ignore
;
ie5
->
value
.
present
=
F1AP_UEContextModificationResponseIEs__value_PR_DRBs_SetupMod_List
;
for
(
int
i
=
0
;
i
<
1
;
i
++
)
{
for
(
int
i
=
0
;
i
<
resp
->
drbs_to_be_setup_length
;
i
++
)
{
//
asn1cSequenceAdd
(
ie5
->
value
.
choice
.
DRBs_SetupMod_List
.
list
,
F1AP_DRBs_SetupMod_ItemIEs_t
,
drbs_setupMod_item_ies
);
drbs_setupMod_item_ies
->
id
=
F1AP_ProtocolIE_ID_id_DRBs_SetupMod_Item
;
drbs_setupMod_item_ies
->
criticality
=
F1AP_Criticality_reject
;
drbs_setupMod_item_ies
->
value
.
present
=
F1AP_DRBs_SetupMod_ItemIEs__value_PR_DRBs_SetupMod_Item
;
/* 10.1 DRBs_SetupMod_Item */
F1AP_DRBs_SetupMod_Item_t
*
drbs_setupMod_item
=&
drbs_setupMod_item_ies
->
value
.
choice
.
DRBs_SetupMod_Item
;
F1AP_DRBs_SetupMod_ItemIEs_t
,
drbs_setupmod_item_ies
);
drbs_setupmod_item_ies
->
id
=
F1AP_ProtocolIE_ID_id_DRBs_SetupMod_Item
;
drbs_setupmod_item_ies
->
criticality
=
F1AP_Criticality_ignore
;
drbs_setupmod_item_ies
->
value
.
present
=
F1AP_DRBs_SetupMod_ItemIEs__value_PR_DRBs_SetupMod_Item
;
/* 7.1 DRBs_Setup_Item */
/* ADD */
F1AP_DRBs_SetupMod_Item_t
*
drbs_setupmod_item
=&
drbs_setupmod_item_ies
->
value
.
choice
.
DRBs_SetupMod_Item
;
/* dRBID */
drbs_setupMod_item
->
dRBID
=
30L
;
/* DLTunnels_SetupMod_List */
int
maxnoofDLUPTNLInformation
=
1
;
// 2;
drbs_setupmod_item
->
dRBID
=
resp
->
drbs_to_be_setup
[
i
].
drb_id
;
for
(
int
j
=
0
;
j
<
maxnoofDLUPTNLInformation
;
j
++
)
{
/* DLTunnels_ToBeSetup_Item */
asn1cSequenceAdd
(
ie5
->
value
.
choice
.
DRBs_SetupMod_List
.
list
,
/* OPTIONAL */
/* lCID */
//drbs_setup_item.lCID = (F1AP_LCID_t *)calloc(1, sizeof(F1AP_LCID_t));
//drbs_setup_item.lCID = 1L;
for
(
int
j
=
0
;
j
<
resp
->
drbs_to_be_setup
[
i
].
up_dl_tnl_length
;
j
++
)
{
/* ADD */
asn1cSequenceAdd
(
drbs_setupmod_item
->
dLUPTNLInformation_ToBeSetup_List
.
list
,
F1AP_DLUPTNLInformation_ToBeSetup_Item_t
,
dLUPTNLInformation_ToBeSetup_Item
);
dLUPTNLInformation_ToBeSetup_Item
->
dLUPTNLInformation
.
present
=
F1AP_UPTransportLayerInformation_PR_gTPTunnel
;
asn1cCalloc
(
dLUPTNLInformation_ToBeSetup_Item
->
dLUPTNLInformation
.
choice
.
gTPTunnel
,
gTPTunnel
);
TRANSPORT_LAYER_ADDRESS_IPv4_TO_BIT_STRING
(
1234
,
&
gTPTunnel
->
transportLayerAddress
);
OCTET_STRING_fromBuf
(
&
gTPTunnel
->
gTP_TEID
,
"1204"
,
strlen
(
"1204"
));
}
/* gTPTunnel */
asn1cCalloc
(
dLUPTNLInformation_ToBeSetup_Item
->
dLUPTNLInformation
.
choice
.
gTPTunnel
,
gTPTunnel
);
/* transportLayerAddress */
struct
sockaddr_in
addr
=
{
0
};
inet_pton
(
AF_INET
,
getCxt
(
false
,
instance
)
->
setupReq
.
DU_f1_ip_address
.
ipv4_address
,
&
addr
.
sin_addr
.
s_addr
);
TRANSPORT_LAYER_ADDRESS_IPv4_TO_BIT_STRING
(
addr
.
sin_addr
.
s_addr
,
&
gTPTunnel
->
transportLayerAddress
);
/* gTP_TEID */
INT32_TO_OCTET_STRING
(
resp
->
drbs_to_be_setup
[
i
].
up_dl_tnl
[
j
].
teid
,
&
gTPTunnel
->
gTP_TEID
);
}
// for j
}
// for i
}
/*
mandatory
*/
/*
optional
*/
/* c6. DRBs_Modified_List */
if
(
0
){
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_UEContextModificationResponseIEs_t
,
ie6
);
ie6
->
id
=
F1AP_ProtocolIE_ID_id_DRBs_Modified_List
;
ie6
->
criticality
=
F1AP_Criticality_reject
;
...
...
@@ -1184,9 +1201,11 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
OCTET_STRING_fromBuf
(
&
gTPTunnel
->
gTP_TEID
,
"1204"
,
strlen
(
"1204"
));
}
}
}
/*
mandatory
*/
/*
optional
*/
/* c7. SRBs_FailedToBeSetupMod_List */
if
(
0
){
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_UEContextModificationResponseIEs_t
,
ie7
);
ie7
->
id
=
F1AP_ProtocolIE_ID_id_SRBs_FailedToBeSetupMod_List
;
ie7
->
criticality
=
F1AP_Criticality_reject
;
...
...
@@ -1208,9 +1227,11 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
tmp
->
present
=
F1AP_Cause_PR_radioNetwork
;
tmp
->
choice
.
radioNetwork
=
F1AP_CauseRadioNetwork_unknown_or_already_allocated_gnb_du_ue_f1ap_id
;
}
}
/*
mandatory
*/
/*
optional
*/
/* c8. DRBs_FailedToBeSetupMod_List */
if
(
0
){
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_UEContextModificationResponseIEs_t
,
ie8
);
ie8
->
id
=
F1AP_ProtocolIE_ID_id_DRBs_FailedToBeSetupMod_List
;
ie8
->
criticality
=
F1AP_Criticality_reject
;
...
...
@@ -1232,9 +1253,11 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
drbs_failedToBeSetupMod_item
->
cause
->
present
=
F1AP_Cause_PR_radioNetwork
;
drbs_failedToBeSetupMod_item
->
cause
->
choice
.
radioNetwork
=
F1AP_CauseRadioNetwork_unknown_or_already_allocated_gnb_du_ue_f1ap_id
;
}
}
/*
mandatory
*/
/*
optional
*/
/* c9. SCell_FailedtoSetupMod_List */
if
(
0
){
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_UEContextModificationResponseIEs_t
,
ie9
);
ie9
->
id
=
F1AP_ProtocolIE_ID_id_SCell_FailedtoSetupMod_List
;
ie9
->
criticality
=
F1AP_Criticality_ignore
;
...
...
@@ -1255,9 +1278,11 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
tmp
->
present
=
F1AP_Cause_PR_radioNetwork
;
tmp
->
choice
.
radioNetwork
=
F1AP_CauseRadioNetwork_unknown_or_already_allocated_gnb_du_ue_f1ap_id
;
}
}
/*
mandatory
*/
/*
optional
*/
/* c10. DRBs_FailedToBeModified_List */
if
(
0
){
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_UEContextModificationResponseIEs_t
,
ie10
);
ie10
->
id
=
F1AP_ProtocolIE_ID_id_DRBs_FailedToBeModified_List
;
ie10
->
criticality
=
F1AP_Criticality_reject
;
...
...
@@ -1279,6 +1304,7 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
tmp
->
present
=
F1AP_Cause_PR_radioNetwork
;
tmp
->
choice
.
radioNetwork
=
F1AP_CauseRadioNetwork_unknown_or_already_allocated_gnb_du_ue_f1ap_id
;
}
}
// /* */
/* c11. CriticalityDiagnostics */
...
...
@@ -1328,6 +1354,28 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
}
}
}
/* optional */
/* c12. SRBs_Setup_List */
if
(
resp
->
srbs_to_be_setup_length
>
0
){
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_UEContextModificationResponseIEs_t
,
ie12
);
ie12
->
id
=
F1AP_ProtocolIE_ID_id_SRBs_SetupMod_List
;
ie12
->
criticality
=
F1AP_Criticality_ignore
;
ie12
->
value
.
present
=
F1AP_UEContextModificationResponseIEs__value_PR_SRBs_SetupMod_List
;
for
(
int
i
=
0
;
i
<
resp
->
srbs_to_be_setup_length
;
i
++
)
{
//
asn1cSequenceAdd
(
ie12
->
value
.
choice
.
SRBs_SetupMod_List
.
list
,
F1AP_SRBs_SetupMod_ItemIEs_t
,
srbs_setupmod_item_ies
);
srbs_setupmod_item_ies
->
id
=
F1AP_ProtocolIE_ID_id_SRBs_SetupMod_Item
;
srbs_setupmod_item_ies
->
criticality
=
F1AP_Criticality_ignore
;
srbs_setupmod_item_ies
->
value
.
present
=
F1AP_SRBs_SetupMod_ItemIEs__value_PR_SRBs_SetupMod_Item
;
/* 11.1 SRBs_Setup_Item */
/* ADD */
F1AP_SRBs_SetupMod_Item_t
*
srbs_setupmod_item
=&
srbs_setupmod_item_ies
->
value
.
choice
.
SRBs_SetupMod_Item
;
/* sRBID */
srbs_setupmod_item
->
sRBID
=
resp
->
srbs_to_be_setup
[
i
].
srb_id
;
srbs_setupmod_item
->
lCID
=
resp
->
srbs_to_be_setup
[
i
].
srb_id
;
}
}
/* encode */
if
(
f1ap_encode_pdu
(
&
pdu
,
&
buffer
,
&
len
)
<
0
)
{
...
...
@@ -1335,9 +1383,10 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) {
return
-
1
;
}
//f1ap_itti_send_sctp_data_req(false, instance, buffer, len, 0
);
f1ap_itti_send_sctp_data_req
(
false
,
instance
,
buffer
,
len
,
getCxt
(
false
,
instance
)
->
default_sctp_stream_id
);
return
0
;
}
int
DU_send_UE_CONTEXT_MODIFICATION_FAILURE
(
instance_t
instance
)
{
AssertFatal
(
1
==
0
,
"Not implemented yet
\n
"
);
}
...
...
openair2/F1AP/f1ap_du_ue_context_management.h
View file @
a1b2d222
...
...
@@ -74,7 +74,7 @@ int DU_handle_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance,
uint32_t
assoc_id
,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
);
int
DU_send_UE_CONTEXT_MODIFICATION_RESPONSE
(
instance_t
instance
);
int
DU_send_UE_CONTEXT_MODIFICATION_RESPONSE
(
instance_t
instance
,
f1ap_ue_context_setup_t
*
resp
);
int
DU_send_UE_CONTEXT_MODIFICATION_FAILURE
(
instance_t
instance
);
...
...
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