Age | Commit message (Collapse) | Author | Files | Lines |
|
Instead of 63, this resolves major "definitely lost" remaining leak that
valgrind reports regarding msgb.
|
|
Useful when debuggin via valgrind/gdb.
|
|
|
|
Never used, so let's get rid of this function. We can recover it later on in
case we need it.
|
|
Make sure circuit routines works correctly.
|
|
Make sure that early dummy bandwitch preallocation works fine in the absence of
any kind of voice traffic.
|
|
Add RTP packets to circuit with dummy padding enabled to test automatic
deactivation once when start seeing real voice traffic.
|
|
Move main test loop routine to the new osmux_test_loop() function.
|
|
This also introduces a spare circuit that contains no voice data to test
bandwidth preallocation through the new osmux dummy frame type.
|
|
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.
|
|
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.
|
|
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.
|
|
Instead of struct osmux_in_handle. This object contains the internal batching
state information.
|
|
A circuit object contains a list of pending RTP messages to be converted to the
osmux format.
|
|
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.
|
|
Add osmux_batch_add_circuit() and osmux_batch_find_circuit() helper functions.
|
|
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.
|
|
We only support voice osmux messages by now. Discard unsupported types.
|
|
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>
|
|
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.
|
|
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);
|
|
This is needed for mgcp_transcode.c of OpenBSC to access the
data after the header. Use a zero sized array for it.
|
|
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.
|
|
|
|
|
|
|
|
This variable is never set and could therefore be removed.
|
|
Libs must be in _LDADD/_LIBADD and not in _LDFLAGS.
|
|
|
|
|
|
|
|
This allows you to set the default batch size when initializing the
osmux input handle.
|
|
Return 0 to the caller, which believes that we have put the message
in the batch. But if it is malformed, silently release it.
|
|
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)
|
|
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.
|
|
Fix accidental inclusion of list_add in debugging message area
in ("62d8a18 osmux: hide spamming debug log messages behind ifdef")
that broke osmux.
|
|
|
|
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.
|
|
Add statistics to the osmux input handle, which translates the RTP
messages to osmux batch.
|
|
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.
|
|
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.
|
|
The original RTP header has been already sanity check. Therefore,
we can assume the clone is sane.
|
|
1) Force batch delivery in case it is full.
2) Skip padding with more RTP clone in case of message lost if the
batch is full.
|
|
To clean up the osmux input handle.
|
|
This tells us the maximum osmux circuit ID.
|
|
|
|
|
|
Follow the debian rule to package the DSOs separately.
|
|
|
|
|