rtpsource.c: In function ‘signal_handler’:
rtpsource.c:209:3: error: called object ‘signal’ is not a function or function pointer
209 | signal(SIGABRT, SIG_DFL);
rtpsource.c:198:32: note: declared here
198 | static void signal_handler(int signal)
Verify is the parsed data is at least the size of the struct, not
exactly the size. Make it accept messages with additional data, like
the SDP information the TTCN-3 testsuite is sending since
This change makes the size checks consistent with the other size
checks in MNCC implementations such as osmo-sip-connector
Related: osmo-sip-connector I522ce7f206932a816a64f03d916799c3215bb8c7
Previous code relied on abort() switching sigaction to SIG_FDL +
retriggering SIGABRT in case the signal handler returns, which would
then generate the coredump + terminate the process.
However, if a SIGABRT is received from somewhere else (kill -SIGABRT),
then the process would print the talloc report and continue running,
which is not desired.
Add codec parameter to start_call() and convenience functions mt_call()
and calls() with FR as default. While at it, update the help text.
Instead of hardcoding FR in rtpsource, add an argument to set the codec
from mncc_mt_loadgen.py via CTRL call rtp_create. Hardcode FR in
mncc_mt_loadgen.py for now, a follow up patch will make it configurable
rtp_bridge=True triggers the automatic transmission of a MNCC_RTP_CREATE
when that call goes into ACTIVE state. We don't want this in the
case of mncc_mt_loadgen, as we perform this at a much sooner point in
This program (derived from mncc_test.py) is used to start MT calls
via the MNCC interface of OsmoMSC. Every calls RTP is connected
to the new 'rtpsource' process, which generates a realistic RTP
flow in terms of number of packets (20ms interval) and payload size.
osmo-rtpsource is a small utility program which is generating
RTP flows at a constant rate of 20ms, as required in most IP based
telphony. The payload currently is hard-coded.
As python-ctypeslib is long unmaintained, it is not packaged
for anything more recent than Debian 8 (jessie). Let's print
that at start and check for availability of the reqquired
executable programs (part of python-ctypeslib).
Printing log level, file name, and line number together with a
log message is the common practice in Osmocom projects that
facilitates debugging and development.
Calling sys.exit() from MnccSocket's constructor could lead to
a situation when the main thread becomes "dead", while its child
threads are still working. Let's throw the exceptions towards
the caller, so it would be possible to handle them there.
Verified this error by GSMTAP using mncc-python interface OsmocomBB to network
In case of MO call (_onmncc_setup_req) caller needs to provide bearer_cap speech version
Added mncc.bearer_cap in mncc_sock.py based on codecs = GSM48.AllCodecs
Added new field mncc.MNCC_F_BEARER_CAP in mncc.MNCC_SETUP_REQ, when call is initiated (MO) from MS -> network
Add a manul test to the contrib folder that helped and can help during
the development of osmo-sip-connector or similar software. This avoids
having to create a separate mncc module.
It can be started like:
$ PYTHONPATH=$PWD/../ python manual_test_server.py
For manual testing the osmo-sip-connector it is nice to run a custom
MNCC server to mock certain behavior. Refactor the socket class to
share code between client/server.
The user can submit a list of permitted codecs for a GsmCallFsm or
GsmCallConnector. This list is ordered by priority (highest first),
and the first matching codec is chosen.
TODO: Proper error handling in case no matching codec is found