Commit Graph
193 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
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
Melissa Elkadi 08cfc0c9df Select fair RR packet scheduler
Also fixed some build problems
2020-12-23 09:28:54 -08:00
Laurent 42a110338c itti dynamic queue creation, and 64 bits instance id 2020-12-23 13:56:01 +01:00
Melissa e3d34c8b01 Fixed multiple UE EPC integration by resetting user->ueid=0;. Lots of logs in this commit, will remove later 2020-12-01 13:39:05 -08:00
Robert Schmidt a6126a39a5 Remove MAX_NUMBER_NETIF and use num UE 2020-10-13 09:07:46 +02:00
Robert Schmidt 8c5976e279 Use "ip add" to add IP addresses
This then only uses the "modern" ip tool instead of ifconfig, and the
command is more "homogeneous".
2020-10-13 09:07:46 +02:00
Robert Schmidt 298956509f Delete double UE IP config setup 2020-10-13 09:07:46 +02:00
Robert Schmidt 4c7035e6e3 Remove UESIM_EXPANSION
This completely removes the UESIM_EXPANSION define: it does not compile
at the moment. Its function was to multiplex multiple UEs on the same
TUN interface. However, this functionality is not needed since it is
possible to allocate many TUN devices (i.e., >= 32).
2020-10-13 09:07:46 +02:00
Michael Cook 3a2e4a3189 Use LOG_A for log messages intended for analysis
This change allows us to disable the LOG_I messages to reduce
overhead.

Removed LOG_VAR macro because it was used in only one place, and
a better solution is to simply use `__attribute__((unused))`.
2020-09-06 07:54:56 -07:00