aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2016-05-26debian: Bump version to 0.0.6.1 with osmux leak fixesreleases/0.0.6-stableHolger Hans Peter Freyther1-0/+6
Attempt to fix leaks in osmux and cherry-pick two changes from master back to this release. Change-Id: I8793bc823cd72a7c883df17cf2f8d3b74df675a9
2016-05-26osmux: Add function to delete all msgs pending for a circuitDaniel Willmann1-0/+11
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-26osmux: Pass circuit to _batch_del_circuit() and use it from _xfrm_input_fini()Daniel Willmann1-12/+10
Change-Id: If224980123d4a369133499ab7b577d02511f4055 Ticket: OS#1733 Reviewed-on: https://gerrit.osmocom.org/119 Tested-by: Jenkins Builder Reviewed-by: Holger Freyther <holger@freyther.de>
2015-11-03misc: Release 0.0.6 without libosmovty dependency0.0.6Holger Hans Peter Freyther1-0/+6
2015-11-03libosmovty: Drop dependency as no VTY code is written hereHolger Hans Peter Freyther2-3/+2
Do not link to libosmovty as we don't need it.
2015-08-23Prepare a new release0.0.5Holger Hans Peter Freyther1-2/+2
2015-08-19osmux: rename batch->dummy field to batch->ndummyPablo Neira Ayuso1-5/+5
This is basically a counter that tells us how many circuits need the padding, so better rename this to ndummy. Suggested by Holger.
2015-07-21build: bump library release numberPablo Neira Ayuso1-1/+1
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-21tests: osmux: iterate 64 times in osmo_test_loop()Pablo Neira Ayuso1-1/+1
Instead of 63, this resolves major "definitely lost" remaining leak that valgrind reports regarding msgb.
2015-07-21tests: compile tests with debugging symbols, ie. -gPablo Neira Ayuso1-1/+1
Useful when debuggin via valgrind/gdb.
2015-07-21tests: osmux: fix msgb leaksPablo Neira Ayuso1-0/+2
2015-07-21osmux: kill osmux_get_hdr()Pablo Neira Ayuso2-14/+0
Never used, so let's get rid of this function. We can recover it later on in case we need it.
2015-07-21tests: osmux: test circuit reopening after closurePablo Neira Ayuso1-0/+7
Make sure circuit routines works correctly.
2015-07-21tests: osmux: validate dummy padding with no voice data interactionPablo Neira Ayuso1-0/+4
Make sure that early dummy bandwitch preallocation works fine in the absence of any kind of voice traffic.
2015-07-21tests: osmux: test online deactivation of dummy paddingPablo Neira Ayuso1-0/+4
Add RTP packets to circuit with dummy padding enabled to test automatic deactivation once when start seeing real voice traffic.
2015-07-21tests: osmux: factor out main test loopPablo Neira Ayuso1-28/+36
Move main test loop routine to the new osmux_test_loop() function.
2015-07-21tests: osmux: adapt it to use the new circuit APIPablo Neira Ayuso1-0/+13
This also introduces a spare circuit that contains no voice data to test bandwidth preallocation through the new osmux dummy frame type.
2015-07-21osmux: introduce osmux_xfrm_input_open_circuit()Pablo Neira Ayuso2-34/+103
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-21osmux: introduce osmux_xfrm_input_close_circuit()Pablo Neira Ayuso2-5/+24
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-21osmux: count pending messages to be transformed in the batchPablo Neira Ayuso1-17/+15
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-21osmux: pass up struct osmux_batchPablo Neira Ayuso1-9/+8
Instead of struct osmux_in_handle. This object contains the internal batching state information.
2015-07-21osmux: rename circuit->list to circuit->rtp_listPablo Neira Ayuso1-7/+7
A circuit object contains a list of pending RTP messages to be converted to the osmux format.
2015-07-21osmux: rename struct batch_list_node to osmux_circuitPablo Neira Ayuso1-33/+33
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-21osmux: add circuit helper functionsPablo Neira Ayuso1-19/+46
Add osmux_batch_add_circuit() and osmux_batch_find_circuit() helper functions.
2015-07-17osmux: add osmux_input_state structurePablo Neira Ayuso1-37/+40
This new structure serves as container of the internal osmux state during transformation from RTP AMR to the compressed osmux format. This reduces the footprint of several functions and it makes them easier to extend if we need to pass new information between functions.
2015-07-17osmux: discard non voice osmux messagePablo Neira Ayuso1-0/+5
We only support voice osmux messages by now. Discard unsupported types.
2015-06-19build: fix regarding missing CFLAGS constituentsAndreas Rottmann1-1/+1
When libosmo-abis is installed in a distinct prefix, the build failed with non-found headers, for example: ../../src/rs232.c:38:35: fatal error: osmocom/abis/e1_input.h: No such file or directory #include <osmocom/abis/e1_input.h>
2015-05-19build: fix "make distcheck"Andreas Rottmann2-1/+3
Running "make distcheck" failed trying to generate ".version" into the read-only unpacked source directory: make[1]: Entering directory '/tmp/build/libosmo-netif-0.0.4.10-7d1d/_build' echo 0.0.4.10-7d1d > ../.version-t && mv ../.version-t ../.version /bin/bash: ../.version-t: Permission denied Makefile:877: recipe for target '../.version' failed Actually shipping ".version" in the tarball fixes that.
2015-03-22rtp: Declare struct msgb to fix compiler warningHolger Hans Peter Freyther1-0/+3
Fixes: /usr/include/osmocom/netif/rtp.h:63:41: warning: ‘struct msgb’ declared inside parameter list struct rtp_hdr *osmo_rtp_get_hdr(struct msgb *msg);
2015-03-22rtp: Add "data" to access the data behind the headerHolger Hans Peter Freyther1-0/+1
This is needed for mgcp_transcode.c of OpenBSC to access the data after the header. Use a zero sized array for it.
2015-03-22endian: Use the new endian macros for portabilityHolger Hans Peter Freyther6-13/+17
Use the new macros to deal with little/big endian. Im a bit worried to make this change due the little test coverage in this module but in case of a typo the elements would not be defined.
2015-03-14debian: Move the package to multi-arch supportHolger Hans Peter Freyther5-11/+14
2015-02-25Fix the compilation on FreeBSD.Nikola Kolev6-0/+8
2015-02-25Fix typo.Nikola Kolev1-1/+1
2014-10-02build: remove all_includesJan Engelhardt6-6/+5
This variable is never set and could therefore be removed.
2014-10-02build: put dependency libraries in the right place in MakefilesJan Engelhardt3-4/+5
Libs must be in _LDADD/_LIBADD and not in _LDFLAGS.
2014-09-11build: rename INCLUDES to AM_CPPFLAGS in Makefile.am to avoid warningsMartin Hauke5-5/+5
2014-09-08Prepare new upstream release0.0.4Holger Hans Peter Freyther4-5/+11
2014-09-08misc: Ignore some build artefactsHolger Hans Peter Freyther1-0/+2
2014-08-29osmux: export OSMUX_BATCH_DEFAULT_MAXPablo Neira Ayuso2-4/+4
This allows you to set the default batch size when initializing the osmux input handle.
2014-08-28osmux: fix more leaks in osmux_xfrm_input() in the error pathPablo Neira Ayuso1-2/+10
Return 0 to the caller, which believes that we have put the message in the batch. But if it is malformed, silently release it.
2014-08-28osmux: stop batch timer in osmux_xfrm_input_fini()Pablo Neira Ayuso1-0/+1
Make sure we don't release a osmux handle with an armed batch timer. ==9753== Invalid read of size 4 ==9753== at 0x4043CA2: rb_first (rbtree.c:293) ==9753== by 0x403E172: osmo_timers_check (timer.c:256) ==9753== by 0x403E69E: osmo_select_main (select.c:124) ==9753== by 0x804EBD3: main (bsc_nat.c:1613) ==9753== Address 0x4302670 is 56 bytes inside a block of size 108 free'd ==9753== at 0x4023B6A: free (vg_replace_malloc.c:366) ==9753== by 0x40494CF: talloc_free (talloc.c:609) ==9753== by 0x40AB279: osmux_xfrm_input_fini (osmux.c:620) ==9753== by 0x80651FC: osmux_disable_endpoint (mgcp_osmux.c:96) ==9753== by 0x805CAFF: mgcp_release_endp (mgcp_protocol.c:1540) ==9753== by 0x805DD35: handle_delete_con (mgcp_protocol.c:1274) ==9753== by 0x805E998: mgcp_handle_message (mgcp_protocol.c:415) ==9753== by 0x804CFF1: mgcp_do_read (bsc_mgcp_utils.c:972) ==9753== by 0x403F96D: osmo_wqueue_bfd_cb (write_queue.c:48) ==9753== by 0x403E724: osmo_select_main (select.c:158) ==9753== by 0x804EBD3: main (bsc_nat.c:1613)
2014-08-28osmux: fix leaks in osmux_xfrm_input() error pathPablo Neira Ayuso1-7/+14
If it is not possible to put the RTP message into the batch in case that: 1) The message is malformed. 2) The message is duplicated. 3) OOM. 4) The batch is already full. Osmux releases the messages and gets back to the upper layer with an OK to give another chance to follow up RTP messages. This patch also fixes a use-after-free that was possible when the batch was full. The message was released and osmux_batch_add() was returning 0 osmux_xfrm_input(), which resulted in accessing the released message when updating the statistics.
2014-08-28osmux: fix osmux_xfrm_output() due to 62d8a18Pablo Neira Ayuso1-1/+1
Fix accidental inclusion of list_add in debugging message area in ("62d8a18 osmux: hide spamming debug log messages behind ifdef") that broke osmux.
2014-08-28osmux: more hide spamming debug logPablo Neira Ayuso1-0/+2
2014-08-28osmux: hide spamming debug log messages behind ifdefPablo Neira Ayuso1-8/+32
This is ugly, with many ifdefs, but they don't want any debug message that can be spamming. I don't want to remove these because there is no dissector for osmux, and this can be useful for troubleshooting.
2014-08-28osmux: add statistics to osmux_in_handle structPablo Neira Ayuso2-0/+15
Add statistics to the osmux input handle, which translates the RTP messages to osmux batch.
2014-08-28osmux: disable timing reconstruction debuggingPablo Neira Ayuso1-0/+3
Should be enabled only in case you consider that Osmux should is lagging when reconstructing RTP messages. I haven't seen any issue regarding this so far. Let's disable it by default.
2014-08-28osmux: allow to specify the osmux frame sizePablo Neira Ayuso2-6/+11
This patch adds a new field to the struct osmux_in_handle that allows you to specify the osmux frame size. If not specified, the default size assumes your nic uses a mtu of 1500 bytes.
2014-08-28osmux: fix leak in osmux_replay_lost_packets()Pablo Neira Ayuso1-2/+1
The original RTP header has been already sanity check. Therefore, we can assume the clone is sane.