Revert of 128e84e and implement for io_uring poller
Turns out that this function is necessary to prevent out-of-order writes
to a streambuf once the connection is open.
Use a simple array to keep track of blocked fds under uring.
Change-Id: I4af2a64071030fd4892dde88547705230aec59fd
In all the cases (apart PUBLISH) ensure to set the actual
media connection when creating SDP using `sdp_create()`.
A new dedicated func `sdp_out_add_media_connection()`
introduced for that.
Change-Id: I26e9b123aad95e2d335aef903d441ecc2cae2605
To prepare the deprecation of session level connection
usage (so the `c=` attribute of the session level),
deprecate first the `replace-session-connection` flag
support, because it will have essentially no use.
Change-Id: I9f9cb8f06d03d1c107a5c928054a79409642bb5b
Rework the `sdp_out_add_origin()` func so, that
it's compatible with offer/answer model.
Additionally it uses the previously existing logic
for the PUBLISH operations always, regardless any
conditions.
Additionally: fix auto-daemon-tests-websocket accordingly.
Change-Id: I0bddc67f4ebe47a24063ccc82428929aeb6cc37a
Always ensure to set the actual sdp session name when
creating SDP using `sdp_create()`.
A new dedicated func `sdp_out_add_session_name()` introduced
for that.
Additionally: fix auto-daemon-tests-websocket and
auto-daemon-tests-pubsub accordingly.
Change-Id: Ie62573149ef9ae226dc8c955dcb2cfaaa4d3ae87
In order to be able to retrieve the top most media
subscription of top media for a given call monologue, introduce
a new func: `call_get_top_media_subscription()`
This is then useful for offer/answer model cases,
where most of cases single-to-single subscription model is used,
and one needs just an access to the opposite subscription/monologue/etc.
Change-Id: I6139a0987eda618d0d27b173abdce6c7562e0544
Always ensure to set the origin name properly when
creating SDP using `sdp_create()`.
A new dedicated func `sdp_out_add_oirigin()` introduced
for that.
Additionally: fix auto-daemon-tests-websocket accordingly.
Change-Id: I671f7b54f8bed9c4b78d6532c0072836d77173e6
In order to be able to use similar attributes manipulations
as in the `sdp_replace()` (based on the `sdp_ng_flags`)
a non-const parameter is required.
Change-Id: I4dce1edfa16b0c2dcd9315a2a3d8cc585f32858f
In order to be able to set `sdp_origin` related things
while initiating a monologue from flags (so in
`__call_monologue_init_from_flags()` ), duplicate `sdp_origin`
from `sdp_session` while doing streams parsing in `sdp_streams()`.
Change-Id: I17a4400a41623d336590010e9dfc5389460b27be
Combine common basic NG checks used in the `call_publish_ng()`
and `call_offer_answer_ng()` functions into a separate func.
Change-Id: I1239c1dafd3b8a4a3ca79879323ce1bf9c3fc9c0
Use relaxed-order atomic ops to access config variables that can be set
during run time.
Rename config_lock to keyspaces_lock as the keyspaces list remains the
only object that it protects.
All other config variables aren't settable at runtime and so don't
require locks or atomic ops.
Change-Id: I7e01a34a4818a558d5648ae27a86f9880a95d050
This only exists because of RTCP indexing issues, but with the index
being in shared memory now, we no longer need this.
Change-Id: Ib0a69214f24a7c1edec8aa53139212ee861a6c4d
The requirement to continuously update stats from the kernel has been
eliminates. Remove all relevant code.
Change-Id: Idc8093b64290b89ff3d015f3e61e4bbe25df6e23
We now have accurate "last packet" timestamps for both user and kernel
space. Since we iterate all calls anyway, we can use these timestamps to
update the gauges.
Change-Id: If0522c387ed1fba51058129ef37a41f45d0c0c8b
... and change to 32 bit.
Remove functions to retrieve kernel stats as they don't do anything any
more.
Add RTCP index information to /list output.
Change-Id: Ia087c8c3913daf83a0749d6a048682b7248eb38b
This field is duplicated with `ext_seq`, which is already kept in shared
memory and therefore preferable.
Also update all sequence number fields to 32-bit (down from 64-bit) as
there's no need for all these extra bits.
Add output seq information to /list.
Change-Id: I0b8d8dfdf5c007c6ca75e7b50a8c900c16be21ed
Use the already existing ext_seq (in shm) in place of srtp_index as
these carry duplicate information.
Kernel still tracks its own index in the crypto context at this point.
Change data type from 64-bit to (unsigned) int as we don't need that
many bits.
Change-Id: I2468c6a814964eb64a19d84c918d3a37c2494b66
Allocate per-payload-type stats buffers in shared bufferpool. Push these
to the kernel module for direct tracking of bytes/packets stats. This
eliminates the need to return these values in the /blist data and
continuously update the userspace stats.
The accomodate updating the payload-type tracker, we use the "last
received" timestamp from the kernel module together with the "last seen
payload type" to give similar results as before.
Change-Id: I524791a1940b5d1ff2d82716c3b7a262f64e106c
This obsoletes the need to retain the last seen kernel stats and track
updates to the counters in order to set call states.
Change-Id: Ie5338bd630b679af205a16933f847ccdcd6a477e
Require rtpe_stats to be set before allowing a target to be created.
Refactor init method into its own function.
Otherwise currently unused.
Change-Id: Ic66e7f92f875ede1a3a2d55fee4ed53c39ff93be
Rename the "noop" method to "init" and split up the function to open the
table into two parts. Open the control file first, then do the mmap(),
then init other things, then finally call the init method.
Change-Id: I832f6e90fbec4375e3e19ed6e72d7cce78488e9e
Keep two separate timestamps, one updated by userspace code only and the
other updated by kernel only. This way we can tell where the packet
processing happens. For code that wants to report only the last
timestamp regardless of which one of the two it is, we add a convenience
function that just returns the newer one.
Change-Id: Ib3af7aa55006d8b32e2bc3db4f8bfa5514c57e40
This leaves the TOS value as the only leftover to be not in shm.
The kernel_stats structures remain for the time being as they're needed
to determine whether kernel forwarding is done or not, as well as for
global stats.
Change-Id: I158f18098e018d2870b797f1a196baa03a0e0fb7
Allocate memory from bufferpool for per-stream stats. No functional
change, but it allows sharing these between kernel and user space.
Change-Id: I370a49e1d94bb91c7fd0a2bc7d00ba65f99c4f6a
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