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
97521d21
Commit
97521d21
authored
Nov 18, 2024
by
Guido Casati
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor mm_msg_encode
parent
3e27e53f
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
32 deletions
+20
-32
openair3/NAS/NR_UE/5GS/fgs_nas_lib.c
openair3/NAS/NR_UE/5GS/fgs_nas_lib.c
+20
-32
No files found.
openair3/NAS/NR_UE/5GS/fgs_nas_lib.c
View file @
97521d21
...
...
@@ -50,67 +50,55 @@ int _nas_mm_msg_encode_header(const fgmm_msg_header_t *header, uint8_t *buffer,
int
mm_msg_encode
(
const
fgmm_nas_message_plain_t
*
p
,
uint8_t
*
buffer
,
uint32_t
len
)
{
LOG_FUNC_IN
;
int
header_result
;
int
encode_result
;
uint8_t
msg_type
=
p
->
header
.
message_type
;
int
enc_msg
=
0
;
/* First encode the 5GMM message header */
header_result
=
_nas_mm_msg_encode_header
(
&
p
->
header
,
buffer
,
len
);
if
(
header_result
<
0
)
{
LOG_TRACE
(
ERROR
,
"Failed to encode 5GMM message header"
"(%d)"
,
header_result
);
LOG_FUNC_RETURN
(
header_result
);
int
enc_header
=
_nas_mm_msg_encode_header
(
&
p
->
header
,
buffer
,
len
);
if
(
enc_header
<
0
)
{
PRINT_NAS_ERROR
(
"Failed to encode 5GMM message header
\n
"
);
return
enc_header
;
}
buffer
+=
header_result
;
len
-=
header_result
;
buffer
+=
enc_header
;
len
-=
enc_header
;
switch
(
msg_type
)
{
case
FGS_REGISTRATION_REQUEST
:
enc
ode_result
=
encode_registration_request
(
&
p
->
mm_msg
.
registration_request
,
buffer
,
len
);
enc
_msg
=
encode_registration_request
(
&
p
->
mm_msg
.
registration_request
,
buffer
,
len
);
break
;
case
FGS_IDENTITY_RESPONSE
:
enc
ode_result
=
encode_fgmm_identity_response
(
buffer
,
&
p
->
mm_msg
.
fgs_identity_response
,
len
);
enc
_msg
=
encode_fgmm_identity_response
(
buffer
,
&
p
->
mm_msg
.
fgs_identity_response
,
len
);
break
;
case
FGS_AUTHENTICATION_RESPONSE
:
enc
ode_result
=
encode_fgs_authentication_response
(
&
p
->
mm_msg
.
fgs_auth_response
,
buffer
,
len
);
enc
_msg
=
encode_fgs_authentication_response
(
&
p
->
mm_msg
.
fgs_auth_response
,
buffer
,
len
);
break
;
case
FGS_SECURITY_MODE_COMPLETE
:
enc
ode_result
=
encode_fgs_security_mode_complete
(
&
p
->
mm_msg
.
fgs_security_mode_complete
,
buffer
,
len
);
enc
_msg
=
encode_fgs_security_mode_complete
(
&
p
->
mm_msg
.
fgs_security_mode_complete
,
buffer
,
len
);
break
;
case
FGS_UPLINK_NAS_TRANSPORT
:
enc
ode_result
=
encode_fgs_uplink_nas_transport
(
&
p
->
mm_msg
.
uplink_nas_transport
,
buffer
,
len
);
enc
_msg
=
encode_fgs_uplink_nas_transport
(
&
p
->
mm_msg
.
uplink_nas_transport
,
buffer
,
len
);
break
;
case
FGS_DEREGISTRATION_REQUEST_UE_ORIGINATING
:
enc
ode_result
=
enc
_msg
=
encode_fgs_deregistration_request_ue_originating
(
&
p
->
mm_msg
.
fgs_deregistration_request_ue_originating
,
buffer
,
len
);
break
;
case
FGS_SERVICE_REQUEST
:
enc
ode_result
=
encode_fgs_service_request
(
buffer
,
&
p
->
mm_msg
.
service_request
,
len
);
enc
_msg
=
encode_fgs_service_request
(
buffer
,
&
p
->
mm_msg
.
service_request
,
len
);
break
;
default:
LOG_TRACE
(
ERROR
,
" Unexpected message type: 0x%x"
,
p
->
header
.
message_type
);
enc
ode_result
=
TLV_ENCODE_WRONG_MESSAGE_TYPE
;
enc
_msg
=
TLV_ENCODE_WRONG_MESSAGE_TYPE
;
break
;
/* TODO: Handle not standard layer 3 messages: SERVICE_REQUEST */
}
if
(
encode_result
<
0
)
{
LOG_TRACE
(
ERROR
,
" Failed to encode L3 EMM message 0x%x "
"(%d)"
,
p
->
header
.
message_type
,
encode_result
);
if
(
enc_msg
<
0
)
{
PRINT_NAS_ERROR
(
"Failed to encode 5GMM message
\n
"
);
return
enc_msg
;
}
if
(
encode_result
<
0
)
LOG_FUNC_RETURN
(
encode_result
);
LOG_FUNC_RETURN
(
header_result
+
encode_result
);
return
enc_header
+
enc_msg
;
}
int
nas_protected_security_header_encode
(
uint8_t
*
buffer
,
const
fgs_nas_message_security_header_t
*
header
,
int
length
)
...
...
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