Don't segfault or use heap after free if osmo-remsim-server cannot
fully initialize, e.g. due to ports already in use.
Change-Id: I558e6a0ea089a779f916aa5576341d1c55da1271
The RSPRO ComponentIdentity includes a 'name' for each remsim component.
So far we always used "fixme-name" instead of something meaningful.
Let's use the hostname of the system instead.
Change-Id: I14925f16ae242dae89fa853a2fe31c5c1b32981d
If something goes wrong during startup (missing CSV file, ...)
let's print a more human-readable error message than just asserting.
Change-Id: I95222d44eefc60ad3857fa70ccebbacce60820df
we're dropping the current (new) connection as we don't really know which
is the "right" one. Dropping the new gives the old connection time to
timeout, or to continue to operate. If we were to drop the old
connection, this could interrupt a perfectly working connection and opens
some kind of DoS.
Related: OS#5527
Change-Id: I00387dbc19d689415470e2f08df08a47a78b81c0
If a bankd connects to the server from 127.0.0.0/8, then clients will
not be able to reach it unless they also run on localhost. Warn the
user.
Change-Id: I5446752961b039dad54aec981c1df4814779f765
If one component connects to another component, verify that the
remote component type (bank/server/client) matches our expectation.
This is important in order to detect a misconfiguration of port numbers,
for example.
Closes: OS#5548
Change-Id: I89a4fc4331e8a0622f8f146c7fc235d34d990497
The RSPRO.asn protocol defines the ranges 0..1023 for slot, bank
and client IDs. Don't make misleading claims in manual and/or
help messages.
Change-Id: Id383b2bea4c014e7b61ae02e7062ba4db5c2dc20
Remove the paragraph about writing to the Free Software Foundation's
mailing address. The FSF has changed addresses in the past, and may do
so again. In 2021 this is not useful, let's rather have a bit less
boilerplate at the start of source files.
Change-Id: I2e98f89f6738d03c45a2106820af0912692093f3
* remove options that have been removed from code
* re-order options to match the order of the --help ouptut
Change-Id: Id4436b980c6a4691f3403ece400b90695a786e09
osmo-remsim depends on a variety of modern libosmocore features,
and now that libosmocore 1.6.0 has been tagged, we can finally depend
on a more recent minimum version.
Change-Id: Ic3cb86b5be524f15d118bcb7ec1947608fbbb034
When osmo-remsim was originally developed, libosmocore logging was
not yet thread-safe. This meant that the worker threads of remsim-bankd
and remsim-server could not log via the libosmocore logging framework
but directly used stderr/stdout, which produced rather inconsistent log
output.
However, since 1.3.0, libosmocore has received support for
multi-threaded applications. Let's make use of this and consistently
use it in remsim-server and remsim-bankd. This obviously also means
adding some more log categories.
Change-Id: I7bd5264c559b756927046563a2d00c54826bee9b
Raw Rx/Tx of messages should be LOGL_DEBUG, while connection
establishment/loss should be something like LOGL_NOTICE.
Change-Id: I1bc6d491a8a748cbd729cbdeede60d32bd760a15
Contrary to other operations, SCardTransmit has a much higher frequency
and the logs should not be clobbered with "OK" lines all over the place.
Change-Id: Icf87b61d71722b2998ae78f9aee7c4ad94c46da7
Right now we get duplicate log lines like
[000 CONN_CLIENT_MAPPED_CARD] bankd_main.c:662 Rx RSPRO tpduModemToCard
[000 CONN_CLIENT_MAPPED_CARD] bankd_main.c:623 tpduModemToCard(0070000001)
Where the first line is printed by the generic receive handler for RSPRO
messages, while the second line is from the specific handler function
handling the specific message type.
Let's only print from the generic message handler if no specific
handler function exists.
Change-Id: I992c847e0081bd1cd8a0b70212618c4980d9db81
Before this commit, the PCSC operation (e.g. SCardStatus) is only
printed in the error case, but not in the debug case. Let's fix that.
[000 CONN_CLIENT_MAPPED_CARD] bankd_pcsc.c:196 : OK
will become
[000 CONN_CLIENT_MAPPED_CARD] bankd_pcsc.c:196 SCardTransmit: OK
Change-Id: I3c77655c5d1f76be778cb8873d8acf1343c87b05
When the client leaves the OPERATIONAL state, do the inverse of what
happens when entering that state:
* request "card insert" no longer to be generated towards modem
* request switch back to local SIM
* reset the modem to notice the change
This way entering remote-sim operation due to adding a slotmap
and leaving remote-sim due to removing the slotmap should be
symmetrical.
Change-Id: Ifaa4b60474bf8585bfbe0288062f581821bd3faa
Closes: OS#5216
It was not enough to verify that the rpm builds on centos.
Set --docdir to install examples to /usr/share/doc/packages instead of
/usr/share/doc in opensuse. Fix for:
File not found: .../usr/share/doc/packages/osmo-remsim/examples/bankd_pcsc_slots.csv
Add missing %dir statements to fix:
osmo-remsim-bankd-0.2.2.113.f2a1.202106230026-lp151.1.1.x86_64.rpm: directories not owned by a package:
- /etc/osmocom
- /usr/share/doc/packages/osmo-remsim
- /usr/share/doc/packages/osmo-remsim/examples
Fixes: 905bc4d2 ("doc/examples: install bankd_pcsc_slots.csv")
Change-Id: Ie5bbb25f8aa87edcea8b952d3c29aab29ac31b19
The boilerplate code for installing configs used in other Osmocom
projects doesn't only install the example configs to /etc/osmocom, but
also to /usr/share/doc/. Add the missing path.
Fixes: 905bc4d2 ("doc/examples: install bankd_pcsc_slots.csv")
Change-Id: I95e4aa34d54bb485ff7ebb5e44d9c1db92ad8fe0
So far, bankd did a 1:1 string match of the CSV file line against
the reader name. As pcsc-lite reader names unfortunately tend to
change at times, we introduce matching by regular expressions in
this patch.
Change-Id: I58b71f9562e152e7ed21b55d7b876bba481b01f8
this typo was breaking operating with simtrace2 for all responses
that contained more than just a status word.
Change-Id: Id8195d6650c3306e1a39f59d78d1348671ad062d
libosmo-simtrace2 traditionally had only supported blocking, synchronous
I/O, while remsim-client used asynchronous USB I/O. Using async USB I/O
for IRQ + IN transfers while using blocking I/O for OUT transfers
doesn't seem to work reliably, so we have to switch OUT also to async.
Depends: simtrace2.git Ib8939bdb7f533cd20a34a30a97f12b782b9816c2
Change-Id: I18bf166a95bd4318d700b3e93401b2db5188acfc