Commit Graph
201 Commits
Author SHA1 Message Date
Laurent THOMAS 2dae7b0db4 Limit visibilty of roundKeys 2025-08-20 09:36:48 +02:00
Robert Schmidt 465d7de5a9 Remove --usim-test command line option
Remove the --usim-test option: to my knowledge, it's not used by users,
and is misleadingly placed in various places where there should not be a
difference w.r.t. USIM configuration.

When making the changes, I assumed that --usim-test would be 0 (the
default), which is the case in all executables when not specified in
options except for the nr_dlsim, nr_pbchsmi, nr_ulsim simulators.

The only exception is the initialization of PDCP from the MAC, which is
not correct (the PDCP is in the CU, so it does not make sense to call it
from the MAC which is in the DU). Instead, always initialize from main,
even in the NSA case (NSA was covered by the incorrect initialization
from MAC).

This in turn let to some more cleanup around function du_rlc_data_req().
After receiving GTP packets at the DU, they were given to the PDCP to
enqueue the packet at RLC. This does not work anymore, since the PDCP is
not initialized; it also does not seem necessary, as this enqueue
functionality is necessary to decouple PDCP and RLC to avoid deadlocks
in monolithic, but in split-mode, this cannot happen. Instead, call
directly into the RLC when receiving GTP packets.
2025-07-23 12:12:59 +02:00
Cedric Roux b99fcdf289 fix IP address
The following error was appearing when running LTE UE:

    inet_pton(): cannot convert -64.-74.0.2 to IPv4 network address

The allocated address by the core actually is 192.182.0.2.

On my host "char" is signed, leading to the above error (192 and 182
are seen as signed).

Let's force "ip_addr" unsigned and everyone is happy.
2025-04-17 10:55:18 +02:00
Robert Schmidt 252c9db246 Correctly express dependency on LOG headers
Various libraries in this commit use the log headers (that is the
direct dependency). The log headers in turn include the T headers
(transitive dependency). Building on gracehopper with its many cores
triggers the build of these libraries before T headers have been
generated.

To resolve this and force the generation of T headers before building
the libraries, correctly express their dependency on the log headers,
which in turn ensures that T headers have been generated.

Depending on log_headers is preferrable because it is really the headers
that we depend on. Using instead e.g., utils, would trigger build of
source files, that we don't need for these libraries.  This commit is
part of a larger cleanup that I have that is not merged yet. Follow-up
work will generalize this in the repo, and ensure that every(!) library
builds.

We have to add CONFIG_LIB, as the log module has a direct dependency
onto the configuration module (it uses it). I am not sure why this was
not relevant before.
2025-03-18 09:21:24 +01:00
Bartosz Podrygajlo e61bf5132d Refactor tun_if.h
Use a common function for generating interface name. Use full interface
name in tun_if.h functions.
2025-02-07 12:25:35 +01:00
Robert Schmidt e0865421b9 Merge remote-tracking branch 'origin/nr-ue-nas-improvements' into integration_2025_w05 (!2984)
NAS 5GS refactor

The goal of this MR is to reorganize the NR NAS code into:

- enc/dec library functions (5GS, 5GMM, 5GSM, NR_NAS_defs.h,
  nr_fgs_nas_lib.c)
- handlers and callbacks (nr_nas_msg.c)

The following changes are introduced:

1. migrate 5GS enc/dec lib (5GMM and 5GSM) to a dedicated folder
2. add a nested CMakeLists structure
3. refactor NR NAS enc/dec functions
4. refactor NR NAS messages struct definitions
5. remove most of dependency from NAS LTE
6. further refactor of PDU Session Establishment Accept processing to
   separate enc/dec from handling
7. made naming of 5GS definitions consistent whenever necessary
8. cleanup unused code
9. remove redundant struct definitions

Also:

1. fix decoding of AMF Set ID in 5G-S-TMSI UE identity
2. replace Byte_t directly with uint8_t
2025-01-31 22:29:31 +01:00
Guido Casati c0583be24e Migrated NAS 5GS (5GMM & 5GSM) to NR folders and refactor CMakeLists.txt files
This commit is introducing the following macro changes:

(1) Migrate NAS 5GS lib files to a new 5GS subfolder in NR_UE
    and organize NAS 5GS lib messages into 5GMM and 5GSM subfolders.
    A nested CMake structure was implemented and CMakeLists.txt were
    added whenever necessary. This is effectively separating 5GS
    libraries from LTE libraries.

(2) In order to simplify the separation of 5GS libs from LTE libs,
    remaining dependencies from NAS LTE (e.g. nas_ue_task.c, ue-idx-standalone)
    were removed in the process

(3) ExtendedProtocolDiscriminator.c/.h and SpareHalfOctet.c/.h were deleted
    and affected types were replaced with simple integer types

(4) Cleanup: unused definitions and libs (e.g. LIB_5GNAS_GNB)
    were removed

(5) Update doc/Doxyfile

(6) clang-formatted the migrated files in the process

(7) Update includes of headers in affected files
2025-01-30 15:17:30 +01:00
Laurent THOMAS ca37e0c123 Clean up NAS code, remove unused compile options 2025-01-23 14:12:06 +01:00
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
Robert Schmidt 8bffd1666d Avoid complete rebuild on cmake run with git info change
Before this commit, the following will trigger a complete rebuild:

- create another git name (git checkout -b test)
- run cmake again manually (cmake ..)
- run ninja again

The top-level CMakeLists.txt uses add_definitions() to add git
information to all targets; if some git information changes, this will
mark all command lines as dirty, triggering the build.

There is an easy solution: instead of passing this information on the
command line, pass it in a header. This commit uses configure_file() to
generate a file oai_version.h in the build directory with the same
information. Various sources files, e.g., main executables, use this to
output the same information as before. It is then also not necessary to
use header guards, as cmake takes care to create this file.

If cmake is re-run, it will update the header, and trigger only files
including this header will be rebuilt (which can be shown with the above
stpes). The information passed is the same as before, and updates the
information when the old method would have updated it.
2024-08-28 15:57:24 +02:00
Robert Schmidt 89d89a7564 Create tun_if module for TUN interface handling
Move openair3/RRC/NAS/nas_config.c to common/utils/tun_if.c, and remove
the former from all targets.
2024-08-02 15:31:04 +02:00
Robert Schmidt 3a99fb8293 Set up 4G UE addr via nas_config() 2024-08-02 15:31:04 +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
francescomani 729aa41952 funcArgOrderDifferent 2024-04-09 16:53:12 +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
Laurent THOMAS 206aa36a47 Make read-only globals const, additional fixes
- Global variables that are never written to are marked const
- Remove some EXTERN declaration
- Remove unused `log_mem_multi` from logging module
2023-08-18 14:20:37 +02:00
Vijay Chadachan 836469e849 CPPCHECK fixes for printf issues
Fix for following CPPCheck warnings
- invalidPrintfArgType
Rebased with latest develop branch w21.
Reverted modifications unrelated to printf issues.
2023-06-01 12:07:26 +02:00
francescomani e49c6db2bf final round of warning fixes to compile nr softmodems 2023-04-07 15:52:16 +02:00
francescomani 3ca0f39088 new round of clang warning fixes 2023-04-07 15:52:16 +02:00
francescomani 87f603687a fixing most warning when compiling nr-uesoftmodem 2023-03-09 19:01:47 +01:00
francescomani 2385bc364a fixing most warning when compiling nr-softmodem 2023-03-09 19:01:46 +01: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
laurent b74ba0fb92 cleaning only 2023-01-19 14:52:39 +01:00
Anurag Asokan 215bb1b02c Moving to execuatbles (incorporating comments) 2022-12-13 09:21:01 +01:00
Anurag Asokan bfbebe2de1 Merge targets/COMMON to executables 2022-10-18 14:22:06 +02:00
laurent 9ee917039a fix non reentrant issue in itti 2022-09-02 11:36:47 +02: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
David Kim 01c2f79f9e Fixed build error in eNB ocp. 2021-11-11 12:43:26 -08:00
Melissa Elkadi 4eb0aceab6 Merge remote-tracking branch 'eurecom/develop' into episys/master-nsa 2021-10-27 15:05:05 -07:00
frtabu c3c02bbd91 Use same port number for source and destination number in new gtp implementation. 2021-10-20 17:09:46 +02:00
Melissa Elkadi 70be674227 Code clean up part 2.
This commit continues to clean up the reminader
of the changed files in the merge req 1274.
The changes include log updates, comment removals,
etc.
2021-09-23 14:19:55 -07:00
Melissa Elkadi 9b16c1d860 Merge branch 'eurecom-develop' into episys/merge_nsa_w_develop
At this point we are successfully able to build.
Additionally, we can run the scenario,
however, it does not pass. It seems that the gNB
is not connecting to the proxy correctly. Just
wanted to push the progress so far. FYI, the items
that had to be changed to correct the linking issues
were the following:

 - mac_rrc_data_ind_ue vs. nr_mac_rrc_data_ind_ue
 - rrc_data_req vs. nr_rrc_data_req
 - mac_rrc_data_req_ue vs. nr_mac_rrc_data_req_ue
 - rrc_data_req_ue vs. rrc_data_req_nr_ue
 - rrc_data_req vs. nr_rrc_data_req

The listed functions should be declard in the LTE/NR
UE directory depending on the functionality. Several
were mixed. i.e.: LTE functions being called in NR UE.

Also, removing siWindowLength, siWindowLength_int,
SIBType, SIBPeriod, and siPeriod_int from the NR UE RRC.
These variable were not used in the NR UE and are defined
for LTE only.

Lastly, in the NR_IF_Module.c of the NR UE, the global
variable def_dci_pdu_rel15 is not accessible. Need to
revisit this. For not it is commented out.
2021-08-11 10:23:42 -07:00
Melissa Elkadi 97a648e35f IP Traffic not working, tun if established by NRUE
Updated the configuration files. Added a sleep to
ensure that the LTE UE gets attached to the EPC
before the bearer is modified to be gNB. Updated
the ifconfig tunnel up command to be brought up
by the NR UE socket when in NSA mode. Lastly,
started the gNB PDCP layer in S1 mode.
2021-07-28 15:36:11 -07:00
Raphael Defosseux 1ec50d4d2c fix(oai-lte-ue): unrestrict socket in nas init. Fix running with a docker Ubuntu container
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-07-19 12:19:27 +02:00
Melissa Elkadi 7f2e622b0e Sending tunnel interface 'up' command to NR UE
Once the LTE UE's tunnel interface with the EPC
is ready to be established, if we are in NSA mode,
we do not want to launch the tunnel interface
from the LTE UE side, but in the NR UE. Via itti_msgs
we send the string containing the tunnel interface
'up' command to the NR UE and bring it up from the NR UE.
2021-07-07 11:55:34 -07:00
Laurent OpenCells c0ef3e6f88 fix gcc reported issues 2021-04-03 23:37:58 +02:00
masayuki.harada ff994453a4 Merge remote-tracking branch 'remotes/oai/develop' into HEAD
# Conflicts:
#	openair3/S1AP/s1ap_eNB.c
#	openair3/S1AP/s1ap_eNB_handlers.c
2021-03-08 14:51:11 +09:00
Raymond Knopp a446eb0ebc Merge branch 'episys/master' into episys-merge
Conflicts:
	common/utils/LOG/log.h
	common/utils/ocp_itti/intertask_interface.cpp
	nfapi/oai_integration/nfapi_vnf.c
	nfapi/open-nFAPI/nfapi/src/nfapi.c
	openair2/LAYER2/MAC/main_ue.c
	openair2/LAYER2/PDCP_v10.1.0/pdcp.c
	openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
	openair2/PHY_INTERFACE/phy_stub_UE.c
	openair2/RRC/LTE/rrc_UE.c
	openair2/RRC/LTE/rrc_eNB.c
	openair3/NAS/UE/ESM/esm_ebr_context.c
	targets/COMMON/openairinterface5g_limits.h
	targets/RT/USER/lte-softmodem.c
	targets/RT/USER/lte-uesoftmodem.c
2021-02-13 22:52:33 +01:00
Michael Cook ee86a66722 Merge commit '0b40edef2adc45965dcfe2071b0c4170389ae8b5' into episys/master 2021-01-12 18:11:10 -05:00
Melissa Elkadi 42ae8207ee NFAPI_MODE logic to include standalone mode
Every if statement that includes a check for
the NFAPI_MODE that did not check for the new
PNF_STANDALONE_MODE now has been updated. Also
changed the tx_req and dl_config_req logs
when they are received at the OAI UE to be
info logs instead of error logs.
2021-01-12 06:54:16 -08:00
Melissa Elkadi a288e502f0 Cleanup before merge
The clean up includes removing white space changes, adding logs,
adding comments to make various changes more obvious, etc.
2021-01-08 14:31:13 -08:00
Wu Jing cead17f2d8 Fix openair3/NAS/UE cppcheck error 2021-01-06 19:33:04 +09:00