Commit Graph

404 Commits

Author SHA1 Message Date
Harald Welte 29d6cd4134 osmo_stream_cli_open2(): Fix bogus EINPROGRESS handling
osmo_sock_init() never returns -1 + errno EINPROGRESS. It will return a
positive fd in case the connect operation is in progress. Therefore,
the related code in osmo_stream_cli_open2() was impossible to execute.

Change-Id: Id3483d1d1d4d2eabba94729ea29e5c93b33abff0
Fixes: Coverity CID 57861
2016-12-01 15:52:54 +01:00
Harald Welte 3dd57f737c rs232: Don't pass negative number to strerror()
Change-Id: Ia777221cd0472cd1e7aa79e5146b07048a545dd8
Fixes: Coverity CID 57860
2016-12-01 15:52:54 +01:00
Harald Welte e63f88146d stream-client: check read() return value before using it as length input to memcpy
Change-Id: Id962821c71b3a1c4c01c1131eb809b8ec8eaa062
Fixes: Coverity CID 57859
2016-12-01 15:52:53 +01:00
Harald Welte a47c8a3f3f stream-client: Check for osmo_fd_register() return value
Change-Id: I1b5fa97d14e69ff502b6deba0fd898a01e53420f
Fixes: Coverity CID 57633
2016-12-01 15:52:53 +01:00
Harald Welte 046b12fa88 rs232-write: Check return value of osmo_fd_register()
Change-Id: If40e85600ca1dfbda5975d7aa92cccdb11f9c34d
Fixes: Coverity CID 57632
2016-12-01 15:52:53 +01:00
Harald Welte b2b2fe643f sctp_sock_activate_events(): Print error message on error
When the setsockopt() in sctp_sock_activate_events() indicates an error,
let's print an error message in the log about this.

Change-Id: I5920154e23debe6d01eaa156005db0842f1a18cc
Fixes: Coverity CID 57634
2016-11-26 16:41:06 +00:00
Harald Welte 7f0e9f1171 examples/lapd-over-datagram-network: Fix compiler warning
lapd-over-datagram-network.c:38:12: warning: ‘sapi’ defined but not used [-Wunused-variable]
 static int sapi = 63, tei = 0;
            ^~~~

Change-Id: If367deb0e0d7d5e031db2bd905179263d18703f0
2016-11-11 15:33:35 +01:00
Arran Cudbard-Bell 5b0ad8bd85
Set SO_NOSIGPIPE on SCTP connections, for patforms which support it (macOS, FreeBSD etc...)
Change-Id: If4f2a99b2baf143551a7122f40ed1f9088c5936c
Signed-off-by: Arran Cudbard-Bell <a.cudbardb@freeradius.org>
2016-11-02 13:22:24 -04:00
Neels Hofmeyr fb88e6b78e jenkins.sh: use osmo-build-dep.sh, log test failures
Like in libosmo-abis' jenkins.sh

Change-Id: I022fbaaa1d211f68b38f18cfaf338ece51198c34
2016-10-07 00:49:12 +02:00
Neels Hofmeyr d0b6eb4777 configure: check for pkg-config presence
Change-Id: Ifaea95befa3d1d8f6f047e22efcd62cb0bd8b287
2016-10-01 00:59:54 +02:00
Neels Hofmeyr e168a1798b build: be robust against install-sh files above the root dir
Explicitly set AC_CONFIG_AUX_DIR.

To reproduce the error avoided by this patch:

  rm install-sh        # in case it was already generated.
  touch ../install-sh  # yes, outside this source tree
  autoreconf -fi

This will produce an error like

  ...
  configure.ac:16: error: required file '../ltmain.sh' not found
  configure.ac:5: installing '../missing'
  src/Makefile.am: installing '../depcomp'
  autoreconf: automake failed with exit status: 1

See also automake (vim `which automake`) and look for 'sub locate_aux_dir'.

Change-Id: Idcce286e83b802b9cd96cee6230aedd51a660b12
2016-10-01 00:59:54 +02:00
Neels Hofmeyr cd7e778f96 gitignore: tests/osmux/.dirstamp
Change-Id: Ia0380da1f4980035938ec39cd2b5674f0400fbb3
2016-07-07 12:52:40 +00:00
Neels Hofmeyr f468e720ad osmux-test: remove real-time constraint by default
Introduce a local #define to disable the real-time constraint from osmux-test.
It would make sense to remove this completely, but in case anyone may be
interested in the timing on a specific platform, I've just #defined it away.

The real-time constraint to pass or fail the test is a bad idea in terms of our
build server. Whenever the server is loaded, the tests will fail for no reason,
like here: https://gerrit.osmocom.org/474
The real time to calculate is highly dependent also on the hardware platform.
The arbitrarity of the time constraint is sort of proven by dd24cdd95f
which simply doubles the time to pass the test.

Change-Id: Ic1da4bd22411652334f73195b2e37853e0738906
2016-07-07 14:13:16 +02:00
Holger Hans Peter Freyther 85bc50cbde debian: Make upgrading from debian SID easier
Make sure the version number of this sourcepackage is higher than
the one found in Debian SID.

Change-Id: I6486f91bc11e0828b4ccd0e22f8e2135af0d271a
Reviewed-on: https://gerrit.osmocom.org/111
Tested-by: Jenkins Builder
Reviewed-by: Holger Freyther <holger@freyther.de>
2016-05-26 12:22:39 +00:00
Daniel Willmann 2904f82f99 osmux: Add function to delete all msgs pending for a circuit
Use this function in osmux_batch_del_circuit() since msgs are stored in a list
per circuit. After the circuit is free()d the msgs are lost.
Before this patch any messages enqueued inside a batch when the circiut is
deleted were leaking.

Change-Id: Ib0311652183332d0475bf7347023d518d38487ef
Ticket: OS#1733
Reviewed-on: https://gerrit.osmocom.org/120
Tested-by: Jenkins Builder
Reviewed-by: Holger Freyther <holger@freyther.de>
2016-05-26 12:05:42 +00:00
Daniel Willmann d5235e5e51 osmux: Pass circuit to _batch_del_circuit() and use it from _xfrm_input_fini()
Change-Id: If224980123d4a369133499ab7b577d02511f4055
Ticket: OS#1733
Reviewed-on: https://gerrit.osmocom.org/119
Tested-by: Jenkins Builder
Reviewed-by: Holger Freyther <holger@freyther.de>
2016-05-25 20:42:41 +00:00
Holger Hans Peter Freyther ecee3f9110 misc: Drop oRTP dependency as there is nothing using it
This seems to be a copy of paste of libsomo-abis. Let us just drop
it here and be done with it.

Change-Id: Ia5cb2b572fb5597605284d1c3f657d548aa790f2
Reviewed-on: https://gerrit.osmocom.org/64
Tested-by: Jenkins Builder
Reviewed-by: Holger Freyther <holger@freyther.de>
2016-05-14 10:06:38 +00:00
Holger Hans Peter Freyther 3583bc4f03 jenkins: Add the build script from jenkins here
This can be used to replicate a build issue more easily.
2016-04-13 18:55:47 -04:00
Holger Hans Peter Freyther d32732a5a2 debian: Update dependencies due SCTP support
We need to have the sctp-dev headers to be installed to be able
to build this package.
2016-03-05 09:16:48 +01:00
Neels Hofmeyr e03b3bc757 osmux_test.c: tweak error report 2016-02-29 15:49:10 +01:00
Daniel Willmann 10f981a4a1 stream: Use macros to access data and length 2016-02-19 09:23:31 +01:00
Holger Hans Peter Freyther 92efd03e87 Do not use strlen on binary inpit
Coverity points out that buf might not be NULL terminated. For the
memcpy ret was already used, so use ret for msgb_put as well.

Fixes: CID#57922
2016-01-23 10:37:28 +01:00
Holger Hans Peter Freyther 4d702db3f7 libsctp: Only define LIBSCTP_LIBS in case there is a lib 2015-12-26 20:19:32 +01:00
Holger Hans Peter Freyther 7aa5a93e77 libsctp: Fix build and don't link everything to libsctp
On some systems sctp_* is part of the standard libc, so do not
use AC_CHECK_LIB but AC_SEARCH_LIBS to find the symbol we need.
Both macros modify LIBS which means all applications will link
again libsctp and this is not what we want. Undo the side-effect
of LIBS and export LIBSCTP_LIBS which is already used in the
Makefile.am.
2015-12-26 20:12:03 +01:00
Harald Welte 2b03b8c07c stream.c: ensure to zero-initialize sctp_sndrcvinfo
caught by valgrind:
==3150== Syscall param sendmsg(msg.msg_control) points to uninitialised byte(s)
==3150==    at 0x60DC0D0: __sendmsg_nocancel (syscall-template.S:81)
==3150==    by 0x5DF3413: sctp_send (in /usr/lib/x86_64-linux-gnu/libsctp.so.1.0.16)
==3150==    by 0x65AA066: osmo_stream_srv_write (stream.c:540)
2015-12-25 17:47:19 +01:00
Harald Welte cc4ce39fc6 fix/complete stream client re-connect logic
So far, when the first connection attempt failed in
osmo_stream_cli_open(), we returned a terminal errro without any
re-connection attempts.  While this may be useful in some cases, our
general idea of the stream client logic is to handle the reconnection
attempts insid the library.  We introduce a new osmo_stream_cli_open2()
function while keping the old behavior for backwards compatibility.
2015-12-22 23:54:21 +01:00
Harald Welte b60edf05a6 stream.c: Fix another 'link' variable / symbol mismatch 2015-12-22 23:53:55 +01:00
Harald Welte b36fd0b912 osmo_stream_cli_destroy: call talloc_free on right object
'link' turns out to be a really bad variable name, as the symbol
resolves to the global link(2)...
2015-12-22 23:40:47 +01:00
Harald Welte fb3e20b4b2 SCTP support for osmo_stream_{cli,srv} code
Wih this change, osmo_stream_ client and server API can be used not only
for TCP but also for SCTP.  The latter is needed in SIGTRAN ad Iuh
applications, for example.
2015-12-21 20:54:19 +01:00
Alexander Huemer d4be141ab0 teip is a pointer, not an int 2015-11-07 12:35:53 +01:00
Holger Hans Peter Freyther efb9af4dad misc: Release 0.0.6 without libosmovty dependency 2015-11-03 09:36:45 +01:00
Holger Hans Peter Freyther faf5faeb7a libosmovty: Drop dependency as no VTY code is written here
Do not link to libosmovty as we don't need it.
2015-11-03 09:35:44 +01:00
Holger Hans Peter Freyther 1d4120c7c2 Prepare a new release 2015-08-23 18:01:57 +02:00
Pablo Neira Ayuso e479f25a9b osmux: rename batch->dummy field to batch->ndummy
This is basically a counter that tells us how many circuits need the padding,
so better rename this to ndummy.

Suggested by Holger.
2015-08-19 00:21:43 +02:00
Pablo Neira Ayuso 0d90dd1563 build: bump library release number
I have added two new interfaces to add and to delete circuits from osmux input
handles. The client application needs to be adapted to use them otherwise it
will break. That's why I'm making this library release incompatible with the
previous generation.
2015-07-21 17:10:14 +02:00
Pablo Neira Ayuso 552bae6081 tests: osmux: iterate 64 times in osmo_test_loop()
Instead of 63, this resolves major "definitely lost" remaining leak that
valgrind reports regarding msgb.
2015-07-21 12:04:58 +02:00
Pablo Neira Ayuso f71308001a tests: compile tests with debugging symbols, ie. -g
Useful when debuggin via valgrind/gdb.
2015-07-21 11:05:41 +02:00
Pablo Neira Ayuso 41d5c3081a tests: osmux: fix msgb leaks 2015-07-21 11:05:41 +02:00
Pablo Neira Ayuso e1aefad278 osmux: kill osmux_get_hdr()
Never used, so let's get rid of this function. We can recover it later on in
case we need it.
2015-07-21 11:05:41 +02:00
Pablo Neira Ayuso f9407cc668 tests: osmux: test circuit reopening after closure
Make sure circuit routines works correctly.
2015-07-21 11:05:41 +02:00
Pablo Neira Ayuso b8bdc290d0 tests: osmux: validate dummy padding with no voice data interaction
Make sure that early dummy bandwitch preallocation works fine in the absence of
any kind of voice traffic.
2015-07-21 11:05:40 +02:00
Pablo Neira Ayuso 386e7755a7 tests: osmux: test online deactivation of dummy padding
Add RTP packets to circuit with dummy padding enabled to test automatic
deactivation once when start seeing real voice traffic.
2015-07-21 11:05:34 +02:00
Pablo Neira Ayuso b36951e6e3 tests: osmux: factor out main test loop
Move main test loop routine to the new osmux_test_loop() function.
2015-07-21 11:02:30 +02:00
Pablo Neira Ayuso 635bef7363 tests: osmux: adapt it to use the new circuit API
This also introduces a spare circuit that contains no voice data to test
bandwidth preallocation through the new osmux dummy frame type.
2015-07-21 10:24:23 +02:00
Pablo Neira Ayuso ea549806c9 osmux: introduce osmux_xfrm_input_open_circuit()
This new function allows you to create a circuit on an existing input handle.

We don't create the circuit anymore from the first packet seen, instead the
client application is in full control of opening and closing the circuit.

This change includes a new feature to pad a circuit until we see the first
packet that contains voice data. This is useful to preallocate bandwidth on
satellite links such as Iridium/OpenPort.
2015-07-21 09:59:49 +02:00
Pablo Neira Ayuso b3fc27423a osmux: introduce osmux_xfrm_input_close_circuit()
Add this new function to explicitly remove an existing circuit. Thus, the
client application (openbsc) is in full control to release circuits.

Before this patch, the circuit object was added when the first RTP messages was
seen, and it was removed when transforming the list of pending RTP messages to
the Osmux message (once the timer expired).

Moreover, check circuit->nmsgs to account bytes that are consumed by the osmux
header, given that !circuit doesn't mean "this is the first packet" anymore.
2015-07-21 09:59:49 +02:00
Pablo Neira Ayuso ab898deea3 osmux: count pending messages to be transformed in the batch
Add a new field to count the number of messages in the batch that are pending
to be transformed to osmux. Use this new field to check when to enable the
osmux timer.

The follow up patch keeps circuit objects in the batch until they are closed,
so we won't be able to rely on this to know when to enable the timer anymore.
2015-07-21 09:59:49 +02:00
Pablo Neira Ayuso d886bd0503 osmux: pass up struct osmux_batch
Instead of struct osmux_in_handle. This object contains the internal batching
state information.
2015-07-21 09:59:49 +02:00
Pablo Neira Ayuso f3016f29dd osmux: rename circuit->list to circuit->rtp_list
A circuit object contains a list of pending RTP messages to be converted to the
osmux format.
2015-07-21 09:59:49 +02:00
Pablo Neira Ayuso 22026a4b9b osmux: rename struct batch_list_node to osmux_circuit
I think this is a better name for this object. Basically, an input handle
represents a batch that is composed of one or more circuit objects.

Each circuit object contains a list of RTP messages that are pending to be
converted to the osmux format in one single batch.
2015-07-21 09:59:48 +02:00