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
zzha zzha
OpenXG-RAN
Commits
f94d2870
Commit
f94d2870
authored
Jun 13, 2023
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
code clenup
parent
f8f9f8ac
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
211 additions
and
232 deletions
+211
-232
openair2/RRC/NR_UE/rrc_UE.c
openair2/RRC/NR_UE/rrc_UE.c
+156
-176
openair2/RRC/NR_UE/rrc_defs.h
openair2/RRC/NR_UE/rrc_defs.h
+55
-56
No files found.
openair2/RRC/NR_UE/rrc_UE.c
View file @
f94d2870
...
...
@@ -1485,15 +1485,10 @@ int8_t nr_rrc_ue_decode_ccch( const protocol_ctxt_t *const ctxt_pP, const NR_SRB
}
//-----------------------------------------------------------------------------
void
nr_rrc_ue_process_securityModeCommand
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
void
nr_rrc_ue_process_securityModeCommand
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
NR_SecurityModeCommand_t
*
const
securityModeCommand
,
const
uint8_t
gNB_index
)
//-----------------------------------------------------------------------------
{
const
uint8_t
gNB_index
)
{
asn_enc_rval_t
enc_rval
;
NR_UL_DCCH_Message_t
ul_dcch_msg
;
uint8_t
buffer
[
200
];
...
...
@@ -1501,7 +1496,10 @@ int8_t nr_rrc_ue_decode_ccch( const protocol_ctxt_t *const ctxt_pP, const NR_SRB
LOG_I
(
NR_RRC
,
"[UE %d] SFN/SF %d/%d: Receiving from SRB1 (DL-DCCH), Processing securityModeCommand (eNB %d)
\n
"
,
ctxt_pP
->
module_id
,
ctxt_pP
->
frame
,
ctxt_pP
->
subframe
,
gNB_index
);
switch
(
securityModeCommand
->
criticalExtensions
.
choice
.
securityModeCommand
->
securityConfigSMC
.
securityAlgorithmConfig
.
cipheringAlgorithm
)
{
NR_SecurityConfigSMC_t
*
securityConfigSMC
=
&
securityModeCommand
->
criticalExtensions
.
choice
.
securityModeCommand
->
securityConfigSMC
;
NR_UE_RRC_INST_t
*
ue_rrc
=
&
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
];
switch
(
securityConfigSMC
->
securityAlgorithmConfig
.
cipheringAlgorithm
)
{
case
NR_CipheringAlgorithm_nea0
:
LOG_I
(
NR_RRC
,
"[UE %d] Security algorithm is set to nea0
\n
"
,
ctxt_pP
->
module_id
);
...
...
@@ -1524,12 +1522,10 @@ int8_t nr_rrc_ue_decode_ccch( const protocol_ctxt_t *const ctxt_pP, const NR_SRB
securityMode
=
NR_CipheringAlgorithm_spare1
;
break
;
}
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
cipheringAlgorithm
=
securityModeCommand
->
criticalExtensions
.
choice
.
securityModeCommand
->
securityConfigSMC
.
securityAlgorithmConfig
.
cipheringAlgorithm
;
ue_rrc
->
cipheringAlgorithm
=
securityConfigSMC
->
securityAlgorithmConfig
.
cipheringAlgorithm
;
if
(
securityModeCommand
->
criticalExtensions
.
choice
.
securityModeCommand
->
securityConfigSMC
.
securityAlgorithmConfig
.
integrityProtAlgorithm
!=
NULL
)
{
switch
(
*
securityModeCommand
->
criticalExtensions
.
choice
.
securityModeCommand
->
securityConfigSMC
.
securityAlgorithmConfig
.
integrityProtAlgorithm
)
{
if
(
securityConfigSMC
->
securityAlgorithmConfig
.
integrityProtAlgorithm
!=
NULL
)
{
switch
(
*
securityConfigSMC
->
securityAlgorithmConfig
.
integrityProtAlgorithm
)
{
case
NR_IntegrityProtAlgorithm_nia1
:
LOG_I
(
NR_RRC
,
"[UE %d] Integrity protection algorithm is set to nia1
\n
"
,
ctxt_pP
->
module_id
);
securityMode
|=
1
<<
5
;
...
...
@@ -1546,9 +1542,7 @@ int8_t nr_rrc_ue_decode_ccch( const protocol_ctxt_t *const ctxt_pP, const NR_SRB
break
;
}
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
integrityProtAlgorithm
=
*
securityModeCommand
->
criticalExtensions
.
choice
.
securityModeCommand
->
securityConfigSMC
.
securityAlgorithmConfig
.
integrityProtAlgorithm
;
ue_rrc
->
integrityProtAlgorithm
=
*
securityConfigSMC
->
securityAlgorithmConfig
.
integrityProtAlgorithm
;
}
LOG_D
(
NR_RRC
,
"[UE %d] security mode is %x
\n
"
,
ctxt_pP
->
module_id
,
securityMode
);
...
...
@@ -1570,16 +1564,16 @@ int8_t nr_rrc_ue_decode_ccch( const protocol_ctxt_t *const ctxt_pP, const NR_SRB
uint8_t
kUPenc
[
16
]
=
{
0
};
uint8_t
kRRCint
[
16
]
=
{
0
};
nr_derive_key
(
UP_ENC_ALG
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
cipheringAlgorithm
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
,
ue_rrc
->
cipheringAlgorithm
,
ue_rrc
->
kgnb
,
kUPenc
);
nr_derive_key
(
RRC_ENC_ALG
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
cipheringAlgorithm
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
,
ue_rrc
->
cipheringAlgorithm
,
ue_rrc
->
kgnb
,
kRRCenc
);
nr_derive_key
(
RRC_INT_ALG
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
integrityProt
Algorithm
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
,
ue_rrc
->
ciphering
Algorithm
,
ue_rrc
->
kgnb
,
kRRCint
);
LOG_I
(
NR_RRC
,
"driving kRRCenc, kRRCint and kUPenc from KgNB="
...
...
@@ -1591,18 +1585,17 @@ int8_t nr_rrc_ue_decode_ccch( const protocol_ctxt_t *const ctxt_pP, const NR_SRB
"%02x%02x%02x%02x"
"%02x%02x%02x%02x"
"%02x%02x%02x%02x
\n
"
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
0
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
1
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
2
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
3
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
4
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
5
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
6
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
7
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
8
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
9
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
10
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
11
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
12
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
13
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
14
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
15
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
16
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
17
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
18
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
19
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
20
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
21
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
22
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
23
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
24
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
25
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
26
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
27
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
28
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
29
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
30
],
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
kgnb
[
31
]);
ue_rrc
->
kgnb
[
0
],
ue_rrc
->
kgnb
[
1
],
ue_rrc
->
kgnb
[
2
],
ue_rrc
->
kgnb
[
3
],
ue_rrc
->
kgnb
[
4
],
ue_rrc
->
kgnb
[
5
],
ue_rrc
->
kgnb
[
6
],
ue_rrc
->
kgnb
[
7
],
ue_rrc
->
kgnb
[
8
],
ue_rrc
->
kgnb
[
9
],
ue_rrc
->
kgnb
[
10
],
ue_rrc
->
kgnb
[
11
],
ue_rrc
->
kgnb
[
12
],
ue_rrc
->
kgnb
[
13
],
ue_rrc
->
kgnb
[
14
],
ue_rrc
->
kgnb
[
15
],
ue_rrc
->
kgnb
[
16
],
ue_rrc
->
kgnb
[
17
],
ue_rrc
->
kgnb
[
18
],
ue_rrc
->
kgnb
[
19
],
ue_rrc
->
kgnb
[
20
],
ue_rrc
->
kgnb
[
21
],
ue_rrc
->
kgnb
[
22
],
ue_rrc
->
kgnb
[
23
],
ue_rrc
->
kgnb
[
24
],
ue_rrc
->
kgnb
[
25
],
ue_rrc
->
kgnb
[
26
],
ue_rrc
->
kgnb
[
27
],
ue_rrc
->
kgnb
[
28
],
ue_rrc
->
kgnb
[
29
],
ue_rrc
->
kgnb
[
30
],
ue_rrc
->
kgnb
[
31
]);
if
(
securityMode
!=
0xff
)
{
uint8_t
security_mode
=
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
cipheringAlgorithm
|
(
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
integrityProtAlgorithm
<<
4
);
uint8_t
security_mode
=
ue_rrc
->
cipheringAlgorithm
|
(
ue_rrc
->
integrityProtAlgorithm
<<
4
);
nr_pdcp_config_set_security
(
ctxt_pP
->
rntiMaybeUEid
,
DCCH
,
security_mode
,
kRRCenc
,
kRRCint
,
kUPenc
);
}
else
{
LOG_I
(
NR_RRC
,
"skipped pdcp_config_set_security() as securityMode == 0x%02x"
,
securityMode
);
...
...
@@ -1621,25 +1614,25 @@ int8_t nr_rrc_ue_decode_ccch( const protocol_ctxt_t *const ctxt_pP, const NR_SRB
(
void
*
)
&
ul_dcch_msg
,
buffer
,
100
);
AssertFatal
(
enc_rval
.
encoded
>
0
,
"ASN1 message encoding failed (%s, %jd)!
\n
"
,
AssertFatal
(
enc_rval
.
encoded
>
0
,
"ASN1 message encoding failed (%s, %jd)!
\n
"
,
enc_rval
.
failed_type
->
name
,
enc_rval
.
encoded
);
if
(
LOG_DEBUGFLAG
(
DEBUG_ASN1
)
)
{
if
(
LOG_DEBUGFLAG
(
DEBUG_ASN1
)
)
{
xer_fprint
(
stdout
,
&
asn_DEF_NR_UL_DCCH_Message
,
(
void
*
)
&
ul_dcch_msg
);
}
log_dump
(
MA
C
,
buffer
,
16
,
LOG_DUMP_CHAR
,
"securityModeComplete payload: "
);
log_dump
(
NR_RR
C
,
buffer
,
16
,
LOG_DUMP_CHAR
,
"securityModeComplete payload: "
);
LOG_D
(
NR_RRC
,
"securityModeComplete Encoded %zd bits (%zd bytes)
\n
"
,
enc_rval
.
encoded
,
(
enc_rval
.
encoded
+
7
)
/
8
);
for
(
i
=
0
;
i
<
(
enc_rval
.
encoded
+
7
)
/
8
;
i
++
)
{
LOG_T
(
NR_RRC
,
"%02x."
,
buffer
[
i
]);
}
LOG_T
(
NR_RRC
,
"
\n
"
);
nr_pdcp_data_req_srb
(
ctxt_pP
->
rntiMaybeUEid
,
DCCH
,
nr_rrc_mui
++
,
(
enc_rval
.
encoded
+
7
)
/
8
,
buffer
,
deliver_pdu_srb_rlc
,
NULL
);
}
else
LOG_W
(
NR_RRC
,
"securityModeCommand->criticalExtensions.present (%d) != NR_SecurityModeCommand__criticalExtensions_PR_securityModeCommand
\n
"
,
securityModeCommand
->
criticalExtensions
.
present
);
}
}
//-----------------------------------------------------------------------------
void
nr_rrc_ue_generate_RRCSetupRequest
(
module_id_t
module_id
,
const
uint8_t
gNB_index
)
{
...
...
@@ -1698,15 +1691,10 @@ nr_rrc_ue_establish_srb1(
return
(
0
);
}
//-----------------------------------------------------------------------------
int32_t
nr_rrc_ue_establish_srb2
(
module_id_t
ue_mod_idP
,
int32_t
nr_rrc_ue_establish_srb2
(
module_id_t
ue_mod_idP
,
frame_t
frameP
,
uint8_t
gNB_index
,
NR_SRB_ToAddMod_t
*
SRB_config
)
//-----------------------------------------------------------------------------
NR_SRB_ToAddMod_t
*
SRB_config
)
{
// add descriptor from RRC PDU
NR_UE_rrc_inst
[
ue_mod_idP
].
Srb2
[
gNB_index
].
Active
=
1
;
...
...
@@ -1715,16 +1703,11 @@ nr_rrc_ue_establish_srb2(
return
(
0
);
}
//-----------------------------------------------------------------------------
int32_t
nr_rrc_ue_establish_drb
(
module_id_t
ue_mod_idP
,
int32_t
nr_rrc_ue_establish_drb
(
module_id_t
ue_mod_idP
,
frame_t
frameP
,
uint8_t
gNB_index
,
NR_DRB_ToAddMod_t
*
DRB_config
)
//-----------------------------------------------------------------------------
{
NR_DRB_ToAddMod_t
*
DRB_config
)
{
// add descriptor from RRC PDU
int
oip_ifup
=
0
,
ip_addr_offset3
=
0
,
ip_addr_offset4
=
0
;
/* avoid gcc warnings */
...
...
@@ -1759,9 +1742,8 @@ nr_rrc_ue_establish_srb2(
LOG_D
(
NR_RRC
,
"[UE %d] State = Attached (gNB %d)
\n
"
,
ue_mod_idP
,
gNB_index
);
}
}
return
(
0
);
}
}
//-----------------------------------------------------------------------------
void
...
...
@@ -2253,11 +2235,9 @@ nr_rrc_ue_establish_srb2(
case
NR_DL_DCCH_MessageType__c1_PR_securityModeCommand
:
LOG_I
(
NR_RRC
,
"[UE %d] Received securityModeCommand (gNB %d)
\n
"
,
ctxt_pP
->
module_id
,
gNB_indexP
);
nr_rrc_ue_process_securityModeCommand
(
ctxt_pP
,
nr_rrc_ue_process_securityModeCommand
(
ctxt_pP
,
dl_dcch_msg
->
message
.
choice
.
c1
->
choice
.
securityModeCommand
,
gNB_indexP
);
break
;
}
}
...
...
openair2/RRC/NR_UE/rrc_defs.h
View file @
f94d2870
...
...
@@ -183,7 +183,6 @@ typedef struct NR_UE_Timers_Constants_s {
}
NR_UE_Timers_Constants_t
;
typedef
struct
NR_UE_RRC_INST_s
{
NR_MeasConfig_t
*
meas_config
;
NR_CellGroupConfig_t
*
cell_group_config
;
NR_ServingCellConfigCommonSIB_t
*
servingCellConfigCommonSIB
;
...
...
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