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
2e651ed2
Commit
2e651ed2
authored
Nov 13, 2024
by
Guido Casati
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add NAS 5GS header decoding functions
parent
b07ddb1e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
57 additions
and
0 deletions
+57
-0
openair3/NAS/NR_UE/5GS/NR_NAS_defs.h
openair3/NAS/NR_UE/5GS/NR_NAS_defs.h
+3
-0
openair3/NAS/NR_UE/5GS/fgs_nas_lib.c
openair3/NAS/NR_UE/5GS/fgs_nas_lib.c
+54
-0
No files found.
openair3/NAS/NR_UE/5GS/NR_NAS_defs.h
View file @
2e651ed2
...
...
@@ -301,5 +301,8 @@ typedef struct {
int
mm_msg_encode
(
const
fgmm_nas_message_plain_t
*
mm_msg
,
uint8_t
*
buffer
,
uint32_t
len
);
int
nas_protected_security_header_encode
(
uint8_t
*
buffer
,
const
fgs_nas_message_security_header_t
*
header
,
int
length
);
int
_nas_mm_msg_encode_header
(
const
fgmm_msg_header_t
*
header
,
uint8_t
*
buffer
,
uint32_t
len
);
uint8_t
decode_5gmm_msg_header
(
fgmm_msg_header_t
*
mm_header
,
const
uint8_t
*
buffer
,
uint32_t
len
);
uint8_t
decode_5gsm_msg_header
(
fgsm_msg_header_t
*
sm_header
,
const
uint8_t
*
buffer
,
uint32_t
len
);
int
decode_5gs_security_protected_header
(
fgs_nas_message_security_header_t
*
header
,
const
uint8_t
*
buf
,
uint32_t
len
);
#endif // NR_NAS_DEFS_H
openair3/NAS/NR_UE/5GS/fgs_nas_lib.c
View file @
2e651ed2
...
...
@@ -132,3 +132,57 @@ int nas_protected_security_header_encode(uint8_t *buffer, const fgs_nas_message_
LOG_FUNC_RETURN
(
size
);
}
/**
* @brief Decode plain 5GMM header from buffer and return fgmm_msg_header_t instance
*/
uint8_t
decode_5gmm_msg_header
(
fgmm_msg_header_t
*
mm_header
,
const
uint8_t
*
buffer
,
uint32_t
len
)
{
if
(
len
<
sizeof
(
fgmm_msg_header_t
))
{
PRINT_NAS_ERROR
(
"Failed to decode plain 5GMM header: buffer length too short
\n
"
);
return
-
1
;
}
mm_header
->
ex_protocol_discriminator
=
*
buffer
++
;
mm_header
->
security_header_type
=
*
buffer
++
;
mm_header
->
message_type
=
*
buffer
++
;
return
sizeof
(
*
mm_header
);
}
/**
* @brief Decode plain 5GSM header from buffer and return fgsm_msg_header_t instance
*/
uint8_t
decode_5gsm_msg_header
(
fgsm_msg_header_t
*
sm_header
,
const
uint8_t
*
buffer
,
uint32_t
len
)
{
if
(
len
<
sizeof
(
fgsm_msg_header_t
))
{
PRINT_NAS_ERROR
(
"Failed to decode plain 5GSM header: buffer length too short
\n
"
);
return
-
1
;
}
sm_header
->
ex_protocol_discriminator
=
*
buffer
++
;
sm_header
->
pdu_session_id
=
*
buffer
++
;
sm_header
->
pti
=
*
buffer
++
;
sm_header
->
message_type
=
*
buffer
++
;
return
sizeof
(
*
sm_header
);
}
/**
* @brief Decode security protected 5GS header from buffer and return fgs_nas_message_security_header_t instance
*/
int
decode_5gs_security_protected_header
(
fgs_nas_message_security_header_t
*
header
,
const
uint8_t
*
buf
,
uint32_t
len
)
{
int
decoded
=
0
;
if
(
len
<
sizeof
(
fgs_nas_message_security_header_t
))
{
PRINT_NAS_ERROR
(
"Failed to decode security protected 5GS header: buffer length too short
\n
"
);
return
-
1
;
}
header
->
protocol_discriminator
=
*
buf
++
;
decoded
++
;
header
->
security_header_type
=
*
buf
++
;
decoded
++
;
uint32_t
tmp
;
memcpy
(
&
tmp
,
buf
,
sizeof
(
tmp
));
decoded
+=
sizeof
(
tmp
);
header
->
message_authentication_code
=
htonl
(
tmp
);
header
->
sequence_number
=
*
buf
++
;
decoded
++
;
return
decoded
;
}
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