Commit Graph
78 Commits
Author SHA1 Message Date
Guido Casati f87388099d Replace type Byte_t used in NAS directly with uint8_t
* the goal is to simplify the code
2025-01-08 20:11:09 +01:00
Laurent THOMAS e48e38650d Fix various problems in 4G NAS handling
- rename as_nas_info_t member data to nas_data to have a uniq name to
  trace between complex malloc/free of this pointer
- fix, maybe not perfect, these pais od malloc/free
- remove typedef name changes across transmission of these as_nas_info_t
  over itti, as name changing makes it even more confusing
- remove globals that are likely possible races
- in as_message_decode() fix memcpy size, it is hard to understand the
  initial idea, likely the author beleives a struct of struct makes a
  intermediate pointer
- in network_api.c remove globals (static but used globally)
- remove casts that are there to hide gcc warnings on probable unaligned
  access
- remain a weird mix of packed/unpacked versions of the same typedef,
  but gcc is happy
2024-10-22 11:05:20 +02:00
Cedric Roux de7bc13000 minor: rename stream_security_container_create() to stream_security_container_init() 2024-04-26 23:31:17 +02:00
Cedric Roux d7931ea412 bugfix: speedup integrity computation
The main work of this commit is to rewrite cipher_aes_128_cbc_cmac()
which was too slow and created issues when running the 4G eNB on some
machines (LLL when using a b210).

Instead of creating the security context, use it, and delete it, all in
cipher_aes_128_cbc_cmac(), we introduce the function init_aes_128_cbc_cmac()
to create it, and we change cipher_aes_128_cbc_cmac() to just use it,
and we also adapt free_aes_128_cbc_cmac(). The function aes_128_cbc_cmac()
is removed, it does not follow the new init/use/free API.

Doing so, on the primary test machine used to do this work (a powerful
and fast machine where it is possible to set the CPUs' frequencies)
it was possible to limit the CPUs' frequencies to 500 MHz (it was not
possible to go lower) without any LLL (using a b210, quectel UE in
idle, no data traffic, only periodic measurement reports). Before this
commit, it was necessary to set a frequency of at least 1.8 GHz
otherwise some LLL would appear.

Then we need to adapt the rest of the code to take into account those
changes.

A notion of security container (stream_security_container_t) containing
ciphering and integrity contexts is introduced.

And the code is harmonized for, hopefully, better readability.

The (opaque) type stream_security_context_t is introduced, used by
both integrity and ciphering contexts. The idea is to use a
init()/use()/free() API for all the security procedures, identical for
all the ciphering and integrity procedures.
2024-04-26 23:31:06 +02:00
mir fc8d0c59c6 Scan build: Result of operation is garbage or undefined 2024-03-07 11:00:57 +01:00
Laurent THOMAS 63b64d4fce move common code file in common directory
remove several unused files
remove mem_block_t that is never used in a different way than a simple heap buffer
move up IP address type and remove duplications of the same struct declaration
2023-12-19 10:37:10 +01:00
Robert Schmidt 9001ad2d7c Correct calloc_or_fail() signature 2023-10-27 10:22:55 +02:00
francescomani 3ca0f39088 new round of clang warning fixes 2023-04-07 15:52:16 +02:00
mir 986a1a80ff Remove nettle library from OAI, support OpenSSL 3.0 and 1.1
Add byte_array_t structure under common/
2023-02-10 16:49:54 +01:00
Anurag Asokan 215bb1b02c Moving to execuatbles (incorporating comments) 2022-12-13 09:21:01 +01:00
Robert Schmidt 0b91791f67 Use (std) bool instead of custom bool types
OAI is riddled with boolean_t, FALSE, TRUE, etc. This makes no sense, as
there is a standard bool type, and could lead to nasty bugs if a
definition of a bool is non-standard (0 == false, true == !false). This
commit removes all non-standard bools in the whole project.
2022-06-27 10:07:48 +02:00
Vijay Chadachan 139d20a9ba Removing unused variables 2022-05-03 11:58:15 +02:00
Vijay Chadachan a8f879ea12 Update for the code review comment.
Instead of NULL RAND value check, added the flag to indicate if the
AUTH process started. The flag is used manage the timer handling
for authentication process when stored RAND values is same as received
RAND value in AUTH_REQ.
2022-04-28 18:08:20 +02:00
Vijay Chadachan 05567b59f1 Fix for OAI UE AUTH_REQ processing additional check for RAND value
It was observed in simulation test the OAI UE always sends the sucessful
AUTH_RES when the AUTH_REQ has the RAND value "0". This opens a back door
in the authentication process.

The code is modified to fix this issue in OAI UE.
2022-04-26 10:59:42 +02:00
Robert Schmidt 00e058537d Remove MSC library, it is not used anywhere 2022-01-27 10:53:07 +01:00
frtabu c3c02bbd91 Use same port number for source and destination number in new gtp implementation. 2021-10-20 17:09:46 +02:00
Wu Jing cead17f2d8 Fix openair3/NAS/UE cppcheck error 2021-01-06 19:33:04 +09:00
Robert Schmidt a51dc94e8b Set correct UE ID in Kenb Refresh Req
NAS triggered the Kenb Refresh Req always for (hardcoded) UE 0. This
fixes this by setting the correct UE ID.

An effect of this was that the Kenb would always be set for UE 0,
regardless for which UE it was actually intended. This led for integrity
check failures for every UE with ID > 0.
2020-03-04 13:38:04 +01:00
Dong Anyuan 0e2406f0fe Remove Coverity Scan CID 60241 (Passing &eplmn to function emm_proc_attach_accept which uses it as an array. This might corrupt or misinterpret adjacent memory locations.) 2019-06-21 18:31:58 +09:00
Dong Anyuan 3b96a7ac3f Fix Coverity Scan CID 60241 (Passing &eplmn to function emm_proc_attach_accept which uses it as an array. This might corrupt or misinterpret adjacent memory locations.) 2019-06-20 12:39:06 +09:00
Dong Anyuan 42f481b51e Fix Coverity Scan CID 60369 (Variable plain_msg going out of scope leaks the storage it points to.) 2019-06-20 12:36:02 +09:00
frtabu fb46545526 Fix corrupted LOGs in L1L2simulator, introducing two new components NFAPI_VNF and NFAPI_pnf. Integrate Fujitsu fix for up to 50 UEs. Apply astyle to all modified files in the branch 2019-02-25 16:50:03 +01:00
frtabu 38d772d8a2 nos1 et s1 execs identical, nos1 enforced based on exec name or --noS1 option 2019-02-17 23:46:45 +01:00
frtabu 18ec5d8047 abort execution when an unknown option is passed via the command line: add config_check_cmdlineopt API to config module, create lte-softmodem-common.c source to remove duplicate code in lte-softmodem.c and lte-uesoftmodem.c, fix segfaults in exec_function of lte-uesoftmodem 2018-11-02 18:17:11 +01:00
frtabu 24f8fcf346 Use common log mechanism in layer 3, mapping specific macros to common ones and extending common log utilities to support specific layer3 requirements 2018-08-24 17:43:14 +02:00
frtabu 30509955c2 remove compilation warnings, especially when disabling T_TRACER. enhance LOG_M macro implementation, introduce LOG_DEBUG_XXX macro to replace #ifdef DEBUG_XXX 2018-07-30 20:07:22 +02:00
Cedric Roux 1b1f941e3c upgrade license to version 1.1 2017-10-23 12:22:13 +02:00
Cedric Roux 5e323eefa2 improve logging in oaisim
- print current working directory
- print git version (if available)
- print security keys
  this last one is a security breach, but as of today
  it's not a problem
2017-05-18 10:39:25 +02:00
Cedric Roux f6e42ce9e4 fix compilation of oaisim
That's not the end of the story though.
2017-01-27 15:52:22 +01:00
Frédéric Leroy 8bc36c3b96 UE/EMM: move emm_nvram filename to nas_user_t 2017-01-25 13:29:10 +01:00
Frédéric Leroy 5fc045644c UE/USIM/API: fix interface for storing usim_data 2017-01-25 13:29:10 +01:00
Frédéric Leroy e36aee0b7f UE: factorize calloc() calls and exit on failure 2017-01-25 13:29:10 +01:00
Frédéric Leroy dcf35b2af1 UE/EMM: fix emm_proc_lowerlayer_* prototype 2017-01-25 13:27:43 +01:00
Frédéric Leroy 5367d5dc3f UE/EMM: move _lowerlayer_data to nas_user_t 2017-01-25 13:27:43 +01:00
Frédéric Leroy 1ca4d551b8 UE: review and annotate code with FIXME 2017-01-25 13:27:43 +01:00
Frédéric Leroy 8d34217ce4 UE: add user instance to itti messages 2017-01-25 13:27:43 +01:00
Frédéric Leroy 556d5a65e9 UE/*: exit on error 2017-01-25 13:24:30 +01:00
Frédéric Leroy fcf2444ee1 UE/EMM: remove redondant ueid in prototypes 2017-01-25 13:24:30 +01:00
Frédéric Leroy 38d7adc7e3 UE/*: fix ueid = 0 2017-01-25 13:24:30 +01:00
Frédéric Leroy c7a36ec6d2 UE/EMM/LowerLayer: move ueid to nas_user_t 2017-01-25 13:24:30 +01:00
Frédéric Leroy a99e1a95af API/USER: move _user_api_id to nas_user_t 2017-01-25 13:24:30 +01:00
Frédéric Leroy 53fa94785a UE/EMM: remove extern definitions for timers 2017-01-25 13:24:30 +01:00
Frédéric Leroy 5b90bcbd25 UE/EMM/SAP: fix misuse of extern for emm_proc_plmn_selection_end() and emm_proc_status() 2017-01-25 13:21:50 +01:00
Frédéric Leroy b33b4df006 UE/API: rename _usim_api_data to usim_sqn_data and move it to usim_data 2017-01-25 13:21:50 +01:00
Frédéric Leroy c875b44958 UE/API/USIM: move _usim_api_k to usim_keys_t 2017-01-25 13:19:39 +01:00
Frédéric Leroy 60032f57b4 UE/EMM: move _emm_attach_data to emm_data_t 2017-01-25 13:12:43 +01:00
Frédéric Leroy 289f1ea971 UE/EMM: move _emm_detach_data to emm_data_t 2017-01-25 13:12:43 +01:00
Frédéric Leroy ef05c1d900 UE/EMM: move static T34XX timers to emm_data_t 2017-01-25 13:12:20 +01:00
Frédéric Leroy 491f299bf2 UE/EMM: move _security_data to nas_user_t 2017-01-25 13:12:20 +01:00
Frédéric Leroy 5899af2efd UE/EMM: move _authentication_data to nas_user_t 2017-01-25 13:12:20 +01:00