- 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
see https://gitlab.eurecom.fr/oai/openairinterface5g/issues/227
When the UE connects to the eNodeB and receives its IP address from the
network, it calls system() to set it in the linux kernel world. This call
is not done in a realtime thread, but in the NAS, which uses its own thread,
independent of the realtime processing.
In some situations this totally disrupts realtime processing.
It is difficult to know precisely why that happens, but it seems that calling
fork(), as system() does, in a multi-threaded program is not a good idea. (So
say several people on the internet.) It is not clear why the softmodem is
impacted, but it seems that fork() is really what triggers the disruption.
Several tests lead to that conclusion.
To fix the problem, we create a child background process very early in main()
(before anything else basically). Then instead of calling system(), the main
process sends the string to the background process. The background process
gets the string, passes it to system() and reports the success/failure back
to the main process.
This solution involves a lot of system calls, but calling system() in the
first place is not cheap either. As long as no realtime thread uses this
mechanism, things should be fine. Time will tell.
The compilation line was:
./build_oai --eNB -w USRP
The file openairinterface5g/cmake_targets/log/lte-softmodem.Rel10.txt
has been checked and all LOG_X (and 'msg') warnings have been fixed.
Those functions modify a global char array (a string).
Let's pass a buffer to those functions, so that it's
thread safe. The caller has been modified, with hopefully
a buffer big enough (still bigger than what was there before,
so should not break more than it did).
Also included some source files not related to this branch.
modified: openair1/PHY/LTE_ESTIMATION/lte_dl_bf_channel_estimation.c
modified: openair1/PHY/LTE_TRANSPORT/pilots_ue_spec.c
modified: openair1/PHY/MODULATION/beamforming.c
modified: openair1/PHY/TOOLS/twiddle18432.h
modified: openair1/SIMULATION/LTE_PHY/dlsim_tm7.c
modified: openair3/NAS/TOOLS/nvram.c
modified: openair3/NAS/TOOLS/usim.c
modified: openair3/NAS/UE/user_defs.h
In openairinterface5g many definitions in many layers of UE or eNB NB_MAX.
We created a file called openairinterface5g_limits.h
located at openairinterface5g_dir/targets/COMMON/ declaring the number max
of UE and eNB to be used in ALL layers depending on launching conditions
(LARGE_SCALE for example).
This patch adds the conf2uedata tool for generating .ue.nvram* .ue.emm.nvram*
and .usim.nvram* files from a textual configuration file.
The configuration file define most usefull values like plmns, mnc, mcc, msin, K,
OPc for several users.
The files generated will always ends with a number corresponding to the user
entry in the configuration file.
This breaks oai5g because other script have not be updated for using
conf2uedata.
This breaks also the at_nas_ue command.
Examples of configuration files are in openair3/NAS/TOOLS/