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
littleBu
OpenXG-RAN
Commits
2e651ed2
Commit
2e651ed2
authored
5 months ago
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
This diff is collapsed.
Click to expand it.
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
;
}
This diff is collapsed.
Click to expand it.
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