Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
If osmux notices a gap between two RTP packets, fill it with
the last RTP packet seen. Without this patch, 10% of packet loss
is enough to get garbage, with it we get glitches in the conversation
with 30%, and pretty much broken conversation with 40% of it.
|
|
This should reduce the amount of batch nodes that are created
by the maximum number of allowed circuit IDs.
|
|
Add sanity checking to avoid crashes on malformed OSMUX packets
|
|
Instead of using the osmuxh->circuit_id.
|
|
Useful for debugging purposes. Modify also examples to use it.
|
|
|
|
CC osmux-test-input.o
osmux-test-input.c:85:2: warning: initialization from incompatible pointer type [enabled by default]
osmux-test-input.c:85:2: warning: (near initialization for ‘h_input.deliver’) [enabled by default]
|
|
Don't make any assumption on the payload type.
|
|
Good for debugging leaks.
|
|
Use talloc_size not talloc. Should fix:
0xb779401a in rb_erase (node=0x200200, root=0xb779c908) at rbtree.c:230
0xb779401a in rb_erase (node=0x200200, root=0xb779c908) at rbtree.c:230
0xb778ee48 in osmo_timer_del (timer=0x94aacd0) at timer.c:110
0xb778ef65 in osmo_timer_add (timer=0x94aacd0) at timer.c:72
0xb778f03c in osmo_timer_schedule (timer=0x94aacd0, seconds=0, microseconds=64000)
0xb77360ff in osmux_xfrm_input (h=0x94a4280, msg=0x94b8a50, ccid=18) at osmux.c:390
Due to uninitialization batch structures.
|
|
ccid array was not initialized appropriately
|
|
|
|
The cmr is the requested codec for the other peer, the ft actually
contains the current codec mode. cmr may contain 15 which means
"don't care".
|
|
there will be one osmux_out_handle per endpoint.
|
|
|
|
|
|
|
|
Remove these functions:
- osmux_xfrm_input_get_ccid
- osmux_xfrm_input_register_ccid
The ccid will be managed by the BSC and it will be stored in the
mgcp_endpoint structure.
Also adjust all tests and examples using the API.
|
|
Shows up with gcc-4.7
ipa.c: In function 'osmo_ipa_rcvmsg_base':
ipa.c:210:6: warning: variable 'ret' set but not used [-Wunused-but-set-variabl
|
|
It should be 16000 and add DELTA_RTP_TIMESTAMP which is 160.
|
|
Rework batching routine to reduce its complexity, updates:
* Now it uses a list of lists to store the messages that will be
batched.
batch list
|
`-> node SSRC=a ---> ... ---> node SSRC=b
| |
msg seq=x1 msg seq=y1
| |
msg seq=x2 msg seq=y2
| |
msg seq=x3 msg seq=y3
| |
msg seq=x4 msg seq y4
This keeps easier the creation of the final batch that is sent from that
data structure.
* We also detect duplicate messages in the batch, ie. messages with the
same sequence are skipped.
Still pending to resolve reordering, corruption and omissions (reliability
is desired).
|
|
Between two RTP messages that were extracted from a batch, the
timestamp difference should be 160.
Signed-off-by: Pablo Neira Ayuso <pablo@gnumonks.org>
|
|
You can use these utilities to test osmux:
1) in one console, run ./osmux-test-input
This listens in port UDP 20000 and convert RTP traffic to osmux
Then, it sends osmux traffic via port UDP 20001
2) in another console, run ./osmux-test-output
This listens in port UDP 20001 and convert osmux to RTP traffic
Then, it sends RTP traffic to UDP port 20002
3) in another console run, nc -u nc -u -l -p 20002
This is the sink, just to avoid ICMP destination unreachable messages
Now you can run replay UDP traffic from one pcap trace that contains
RTP traffic with this tool:
http://1984.lsi.us.es/git/pcap-inject/
Example of command line invocation:
./traffic-inject /home/pablo/rtp-nanobts-2-phones-amr.pcap udp 20000
You can run wireshark in the loopback to make sure osmux is getting back
the traces looking like the original.
The tests also generate output files in AMR that you can validate via
mplayer: /tmp/output.amr and /tmp/input.amr respectively. This is to
make sure there are no reordering or problems of any sort.
|
|
Instead of internally released. This is required if we use the
osmo_dgram infrastructure, to avoid a double release.
Signed-off-by: Pablo Neira Ayuso <pablo@gnumonks.org>
|
|
Signed-off-by: Pablo Neira Ayuso <pablo@gnumonks.org>
|
|
Code extracted from ipa_stream_server.c.
|
|
This functions were before located in channel/abis/ipa_stream_client.c,
but they are generic for IPA units.
|
|
This fixes the crash while closing socket with/without link with a
valid IPA unit.
|
|
This patch removes osmo_ipa_recv_msg, it performs two syscall invocations
and it's stream generic. Now we use the specific receival function
we want to use (no matter if stream or datagram based) and then we
call osmo_ipa_process_msg to check that the IPA message correct.
|
|
Provide unified infrastructure for handling IPA units and modify
existing code to use it.
|
|
To obtain the information of the server data that this connection
belongs to.
|
|
And move all existing A-bis channel implementation to channel/abis/
directory.
This is just a cleanup to reorganize the source code tree.
|
|
This adds the possibility to specify the variant of the channel.
This was discussed during the osmocom workshop. Harald wanted a way
to say if the channel is using TCP, UDP, DADHDI and so on.
|
|
Also remove this parameter from osmo_chan_create
|
|
Just to avoid unlikely possible problems while using this library
with any other that decided to define the CHAN_* constants.
|
|
This also adds osmo_chan_init() that needs to initialize the
channel infrastructure.
|
|
These definitionsare not relevant for external client applications
using the library.
|
|
They are not used anywhere in the code.
|
|
This will be useful to display some human-readable type in logs
and the VTY.
|
|
I forgot to commit this file:
osmocom/netif/channel/abis_ipa_client.h
|
|
This reverts 373d1e6540c64ab09a974c71deeb1eeacd68d5bf.
|
|
If we're acting as client, we don't have to reply ID_ACK to
one received ID_ACK (otherwise, we enter a loop).
|
|
Using generic osmocom logging infrastructure
|
|
|
|
|
|
|
|
This adds the generic ipa_unit object that is allocated and set
by the BTS while initializing the channels.
|
|
%s/_server_/_srv_/g
%s/osmo_chan_abis/osmo_abis/g
%s/SERVER/SRV/g
|
|
%s/_client_conn_/_cli_/g
%s/_server_conn_/_srv_/g
%s/_client_/cli/g
%s/server/srv/g
%s/RECONFIG/RECONF/g
%s/SERVER/SRV/g
%s/CLIENT/CLI/g
|