Age | Commit message (Collapse) | Author | Files | Lines |
|
Let's disable hex category here since we don't care about its formatting here.
In any case, every test relying on logging output validation should
always explicitly state the config to avoid issues in the future if
default values change.
Related: OS#5034
Change-Id: I332d1215fc7784a6647b90e2eb8b1efcd644002e
|
|
Change-Id: I5b369343cf708ddfcde347f218a10d5f72303aaa
|
|
Change-Id: Ib676eda521f0e89a1f4d8f9eac810598a3c813b9
|
|
Change-Id: Ibe8e2d580848a41dd25e0ae2d95f83233be6ed9a
|
|
This code is able to detect and sync against a variety of TRAU
frame sync patterns. Focus is so far on those patterns present on
16k sub-slots, but 8k sub-slots are expected to be supported soon,
too.
A new codebase for this is required as the old OsmoNITB code had
conflated a 16k sub-slot multiplexer with TRAU frame synchronization,
so there was no way to separate those two parts and hence no way to
support 8k sub-slots.
Change-Id: Ia6fe6228b0b8b9a27999f37ce1115ed5558881ea
|
|
Change-Id: If3fb68fda1c109f6aa15aa68c5bce285054efda7
|
|
In commit Ia082b9fddf03d02afd007825a1588a3ef0dbedae we switched
from 'uint8_t *' to 'const ubit_t *' - change the test case
accordingly.
Change-Id: I7d24b891a21e6e485738ddf4a302583579b012d5
|
|
ortp >= 0.24.0 doesn't differentiate between SO_REUSEADDR and
SO_REUSEPORT, and has both enabled by default. The latter means that
we can end up with non-unique port bindings as we will not fail to
bind the same port twice.
This should have caused visible problems not only when operating multiple
osmo-bts on one machine (rare), but also with a single osmo-bts. Once the range
(default 16384-17407 ) wraps, there is a risk of new sockets (for new cals)
colliding with old ones. As two ports (RTP+RTCP) are used per call, this means
every 512 voice calls we expect the BTS to wrap. And from that point onwards
there's a risk of overlapping with previously allocated sockets.
Change-Id: I4fc9eee561c7958c70c63b4ffdc6cb700b795e28
Closes: OS#4444
|
|
Change-Id: I6742e5504cfb827031031e4d8d49a616ab203a94
|
|
This ensures that the rpath of the generated binaries is set to use only
the just-compiled so-files and not any system-wide installed libraries
while avoiding the ugly shell script wrapper.
Change-Id: Idd458471069ef8912704cc7602c6e8c71c0b62be
|
|
Handle encoding specifics behind a macro to make code easier to
understand and follow.
Change-Id: Ibf251673bff95b7a0b066b19ef4dc6c0f94fff6b
|
|
Change-Id: Iab9d111aba8f9b423e6a541e928f68b38d561067
|
|
Change-Id: I9f2bc8c5d8a2c0bb0dd6caa4de5e2cb11be210e7
|
|
This test didn't compile as it called the wrong method. It is a
manual test anyway and tend to bitrot. I didn't execute the
resulting test binary. Hmm, now I did and it segfaults on something
that appears to have been introduced a long time ago. Manual
tests are as good as no tests (besides they take more time than
writing no test). ;)
|
|
In order to support multiple TRX, multiple RSL connections can be
establised. e1inp_ipa_bts_rsl_connect() requires an additional parameter
to set the TRX number.
The ts[] array (member of struct e1inp_line) refers to OML and RSL.
ts[0] refers to OML link, ts[1] to RSL link of first TRX, ts[2] to
RSL link of second TRX (if exists) and so on.
The code was successfully tested with osmobts-trx and UmTRX with two
transceivers.
The user of e1inp_ipa_bts_rsl_connect() (which is osmo-bts) can use
the new function like this (backwards compatibility function provided):
src/common/oml.c
- rc = e1inp_ipa_bts_rsl_connect(oml_link->ts->line, inet_ntoa(in), port);
+ rc = e1inp_ipa_bts_rsl_connect_n(oml_link->ts->line, inet_ntoa(in), port,
+ trx->nr);
|
|
libosmo-abis is about forming A-bis interfaces/lines by means
of E1 or the IPA multiplex (or possibly other link layers).
The IPA multiplex is used in other contexts, such as the Control
interface, or the A interface. In that context, it makes sense to have
generic IPA related functions in libosmocore.
|
|
Currently ipa_msg_recv() fails, when messages are received partially.
This patch provides a new function ipa_msg_recv_buffered() that uses
an additional ** to a message buffer to store partial data. When
this happens, -EAGAIN is returned. If NULL is used, the function
behaves similar to ipa_msg_recv() and fails on partial read.
In addition in case of errors the return value is now always -EXXX
and the contents of errno is undefined.
Note that this feature needs support by the calling code insofar that
*tmp_msg must be set to NULL initially and it must be freed and
set to NULL manually when the socket is closed.
Note also that ipa_msg_recv() is then a wrapper around
ipa_msg_recv_buffered() which mimics the old error behaviour by
setting errno explicitely to -rc and returning -1 when an error has
happened.
Ticket: OW#728
Sponsored-by: On-Waves ehf
|
|
This patch adds tests for ipa_msg_recv(), where messages are sent
either complete or partitioned.
Sponsored-by: On-Waves ehf
|
|
This was basically a link to configure/ipa which is not cleanly
supported by the current VTY framework.
The test program uses the default implementation for
go_parent_cb/vty_go_parent() and is_config_node, since config-ipa is
a top level config node which is assumed by default.
|
|
If we have a BTS-side e1inp_line, we can only establish OML at the
time of line_update. We have to wait with RSL until the BTS explicitly
tells us the RSL destination IP and port (received via OML from BSC).
This is now handled in a new function called
e1inp_ipa_bts_rsl_connect().
|
|
I have removed HSL support from OpenBSC, the E1/Abis code is now
unused and can be removed.
Fixes: Coverity CID 1040693
|
|
Since automake 1.13 INCLUDES is depricates and causes a warning
|
|
This file is created in ./configure so we shouldn't remove it with make.
Otherwise ./configure && make clean && make check fails
with:
make[3]: *** No rule to make target `atconfig', needed by `check-local'.
Stop.
|
|
Tests if the frame synchronization header is correctly recognized.
The problem tested for is the following:
The sync header consists of 16 zero-bits followed by 1 one-bit. Before,
subchan_demux only tested for the 16 zero-bits. But if the previous
frame ended in one or more zero-bits these were then already counted as
belonging to the sync header, leading to a frame that was shifted by one
or more bits.
|
|
Tobias has worked on CSD support and Dieter has helped with a CSD
trau fix. This is a stub that should allow to easily write a test
case for the syncing issue observed by Tobias.
Run the tests:
$ make check
In case of failure:
$ vi tests/testsuite.dir/1/testsuite.log
Add the actual content:
$ edit tests/subchan_demux/subchan_demux_test.c
Update the test result:
$ ./tests/subchan_demux/subchan_demux_test > tests/subchan_demux/subchan_demux_test.ok
|
|
|
|
Fix a leak in the tests: The ->sign_link callback is reponsible
for releasing the msgb.
|
|
This patch adds signal handling to release memory in the exit
path of the tests. This is good to check what memory we are
leaking in the exist path of the tests.
|
|
We have to read from the eventfd, otherwise select keeps returning
the file descriptor as ready to read.
|
|
CC e1inp_ipa_bts_test.o
e1inp_ipa_bts_test.c: In function ‘sign_link_up’:
e1inp_ipa_bts_test.c:47:8: warning: variable ‘dst’ set but not used [-Wunused-but-set-variable]
e1inp_ipa_bts_test.c: In function ‘test_bts_gsm_12_21_cb’:
e1inp_ipa_bts_test.c:211:6: warning: variable ‘ret’ set but not used [-Wunused-but-set-variable]
CCLD e1inp_ipa_bts_test
|
|
The sequence to trigger the crash was:
1) establish a full A-bis IPA link (both OML and RSL correctly established
and ID_RESP received from BTS).
2) nc 127.0.0.1 3002 # establish OML link only
I forgot to set to NULL the oml and rsl links we're using. Otherwise,
the test calls e1inp_sign_link_destroy(rsl) which does not exists.
|
|
Signed-off-by: Diego Elio Pettenò <flameeyes@flameeyes.eu>
|
|
--as-needed was default in Natty and somehow got more strict in
this version of Ubuntu. Link to osmo vty.
|
|
This example has to compile out of the tree, including internal.h
is not required and using PACKAGE_VERSION here, which is internal
to the library, does not seem to me like a good idea.
|
|
struct e1inp_line_ops {
- enum e1inp_line_role role;
- char *addr;
- void *data;
+ union {
+ struct {
+ enum e1inp_line_role role; /* BSC or BTS mode. */
+ const char *addr; /* IP address .*/
+ void *dev; /* device parameters. */
+ } ipa;
+ struct {
+ const char *port; /* e.g. /dev/ttyUSB0 */
+ unsigned int delay;
+ } rs232;
+ } cfg;
Now this structure contains the configuration details for the
virtual E1 line, instead of using a pointer.
This also get the line_update callback to its original layout:
+ int (*line_update)(struct e1inp_line *line);
|
|
Thus we can use it with the example file for openBSC under
doc/examples/nanobts/openbsc.cfg.
|
|
This updates the code and brings it in sync to
libosmocore git commit 892e621fec571c7cba3573caa0d328ed1b25d8ee
|
|
It's not a good idea to confuse the two changes with each other. Moving the
Abis part into a separate library is independent from the question whether we
have talloc inside libosmocore or use a stand-alone talloc library.
|
|
Hm, it seems I forgot to git add them :-(.
|
|
Like the HSL BTS example. We use an event file descriptor
which is used to call the GSM 12.21 based function for
handling.
|
|
This patch adds the BTS support for the hsl driver.
It includes two examples under the tests/ directory.
|
|
We only close the OML and RSL links if they are indeed up.
|
|
This allows to test that the write path works and it allows
you to get an idea on how to implement the BTS side by means
of libosmo-abis.
|
|
The ipaccess driver is tricky. Since it uses two ports for OML
and RSL links, the link for RSL needs to be done in the same
line that the OML link.
Now the BSC examples uses the virtual E1 line where the OML
link is for the RSL one.
This patch also verifies that the OML link is up before the
someone tries to get the RSL link up.
|
|
This patch steals some code from openBSC to implement the
OML software activate request ack message which is delivered
to the BTS.
This allows to test the ->sign_link(...) path.
|
|
I can send patches to improve it later, better not to waste
much time at it by now so port libosmo-abis upon it.
|
|
This patch removes the struct e1inp_sign_link parameter since this
is already available in the msgb->dst field of the message.
|
|
instead of using printf
|
|
This patch moves the ID_GET logic from the example file to the
ipaccess driver in BTS mode.
|
|
This patch is a major update of the callback infrastructure, now
the e1input_ops looks like the following:
struct e1inp_sign_link * (*sign_link_up)(void *unit_info, struct e1inp_line *line, enum e1inp_sign_type type);
void (*sign_link_down)(struct e1inp_line *line);
int (*sign_link)(struct msgb *msg, struct e1inp_sign_link *link);
The sign_link_up and sign_link_down will be used by the A-bis over IP
input drivers.
The sign_link_up callback is used if we receive a ID_RESP message, in
that case, we have to set up the sign link for the corresponding new
OML/RSL signal link. The pointer to unit_info provides a data structure
that contains the BTS device details if we run as BSC, and the requested
device information from the BSC if we run as BTS. The sign_link_up
callback must return the new sign_link created.
The sign_link_down callback is invoked if the line does down, which
means that the counterpart has closed the socket.
The sign_link callback is used to handle all RSL/OML messages.
I have also added the following callback to the e1inp_driver:
+ void (*close)(struct e1inp_ts *ts);
Which is invoked if you call e1inp_sign_link_destroy(). This callback
is used to close the socket that is linked to that timeslot. This is
useful for A-bis over IP drivers since sockets are closed if the
OML/RSL signalling link is destroyed.
As you can notice, I have also added all the ID_RESP parsing into
libosmo-abis for both ipaccess and hsl drivers.
This patch also contains a rework of the ipa_client_link whose
integration with the e1_input infrastructure was broken (the
transmission path was broken).
This patch also contains more develop examples that act as BSC
and BTS for the ipaccess driver.
Sorry, I know it would be better to split all these changes into
logical pieces but many of them are tightly related.
This is under heavy development stage, it's anyway hard to track
changes until this becomes more stable.
|