Use the kernel/user shared memory to keep track of interface stats. This
eliminates the need to update the userspace stats counters with the
values from the kernel, and vice versa when updating the kernel streams.
Add a function to reverse map userspace mapped memory address to kernel
space addresses.
Change-Id: Iaa5f9488061a12103e57faf27b3979521778cea8
These will be shared between userspace and kernel space and so the
definitions must be part of the kernel includes.
Change-Id: Iabf7a4ecff3638ea1765a6d7341bb24e9955b509
Only increase the SRTCP index when encrypted SRTCP is actually in use.
This would be apparent when a stream is switched from RTCP to SRTCP.
Change-Id: I3a31377b89c5124035152d504e7d99f8cf1d96a1
This has been broken for a while and nobody seems to be using it since
nobody complained. Remove it.
Change-Id: I114e7b1859ecd1982338c625f4523f372af3bbe8
skb_copy() copies the GSO state of the skb as well, but we have
converted the skb to a flat linear skb with skb->next being NULL.
__udp_gso_segment() by way of __udp_gso_segment_list() expects skb->next
to be non NULL if GSO flags are present, causing a page fault. Reset the
GSO flags to make sure this doesn't happen.
closes#1792
Change-Id: Idae561120940e407e435e361316383fe5a5c5b7e
Ref: https://github.com/sipwise/rtpengine/issues/1792
Honour the capabilities of the output net devices and only perform
partial checksumming if GRO is in use.
closes#1792
Ref: https://github.com/sipwise/rtpengine/issues/1792
Change-Id: Ic524e3649aefcb274b4bf362970b10f0743d484a
Since skb is a copy of the ingress skb, ->dev still points to the device
the packet was received on. For sending, set it to the outgoing device,
taken from the dst object.
Change-Id: Ia27b4318925dec4396e485a389d818dd46bcac78
Older kernels (3.x) have ktime_t defined as a union, which means we
can't just treat it as a number and must wrap it inside {}. This still
also works for later kernels which have it typedef'd as an int.
closes#1708
Change-Id: I6195e45eb80f6e430e97247f62cd5f6696450b09
Don't explicitly set the "non forwarding" flag just because an RTCP
stream is being kernelised. The distinction between RTP and RTCP,
together with zero-length outputs setting "non forwarding" automatically
takes care of it.
Change-Id: Ie363fc369b7ace21ed172a0ec141c83afd1ba21b
When using recording via the proc interface, this error indicates that
the client (rtpengine-recording) is not reading the stream data fast
enough.
Closes#1676
Change-Id: I8a0d04745edb0e166f74d8ab5e8b979667f7f108
DTMF requires the "end" event to be sent multiple times, requiring
sequence number adjustments after DTMF injection has finished. Add
support for this to the kernel module.
Change-Id: Ie5c8f18eda39553a6ebbdd35ef2341be01f2a59f
This combines the REMG_DEL_TARGET method with REMG_GET_STATS. It
retrieves the stats of an existing target, returns them to userspace,
then proceeds to delete the target.
Change-Id: Ibd715c176f0415c49ac94b9e3c8d8cafdd829e1a
Check all the struct sizes as part of the startup NOOP command, to try
to catch incompatible kernel module versions.
Change-Id: Ib617878e1e5a813de199c5405db3680c1e4d3351
The unified `rtpengine_message` struct has become quite large, and most
fields are not used for most of the messages sent to the kernel module.
Use command-specific structures that only contain the required
information. Adapt the I/O code and the size checks to use the correct
sizes.
Do special handling for GET_*_STATS as these commands do both input and
output at the same time. Copy in only the input portion of the struct.
(Copy-out still copies the entire struct at this point.)
Change-Id: Ia8aec6135fd7de42ae4e62e7f2dc23804e1f0914
We don't necessarily have a parsed-out RTP header (e.g. when forwarding
T.38) so we can't use the RTP header values to keep stats. Use the
actual datagram size instead.
Change-Id: I16d25c3353dcd21a0e8c6e06610a8bfe6859710d
These are the entries the kernel will try to look for when userspace
tries to use the RTPENGINE support, but the module is called
xt_RTPENGINE so the kernel does not find it and thus cannot autoload
it.
The problem is that we have startup code that sets up iptables rules,
and will fail if the module has not yet been loaded. By adding these
aliases we are no longer concerned about the ordering, and can let the
kernel autoload the modules when they are needed.
Change-Id: I43a54af4e32adf755538c57df711da048c720030
… if it does not exist. Likewise in iptables-extension/Makefile .
daemon/rtpengine.pod: spell what MOS means
MAX_SESSIONS in config file does not work, it must be max-sessions.
https://github.com/sipwise/rtpengine/pull/1589