Taruntej Kanakamalla
36d8243397
ptp: use ip_mreq instead of ip_mreqn for macOS
...
To join a multicast the macOS still uses the interface address
from the ip_mreq instead of the ip_mreqn unlike other Linux systems.
So add a new conditional block for macOS to use ip_mreq for IP_ADD_MEMBERSHIP
and ip_mreqn for IP_MULTICAST_IF
This is similar to the fix in the glib for multicast join/leave
operation on macOS
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4333
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7851 >
2024-11-11 10:26:43 +00:00
Samuel Thibault
31047b878f
ptp-helper: Add GNU/Hurd support
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6970 >
2024-05-30 16:14:29 +00:00
Sebastian Dröge
2a58e6de8f
gstreamer: ptp-helper: Use u64 instead of c_ulong for ifa_flags on Solaris/Illumos
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3553#note_2429400
Patch by Marcel Telka <marcel@telka.sk>.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6934 >
2024-05-28 09:06:57 +03:00
Sebastian Dröge
1c88b06912
gstreamer: ptp-helper: Use if_nametoindex
and setsockopt
on Solaris / Illumos too
...
Patch by Marcel Telka <marcel@telka.sk>.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3552
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6925 >
2024-05-26 12:34:26 +03:00
Sebastian Dröge
8bff6b4988
gstreamer: ptp-helper: Use c_ulong
for ifa_flags
on Solaris/Illumos
...
Based on a patch by Marcel Telka <marcel@telka.sk>.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3553
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6925 >
2024-05-26 12:34:13 +03:00
Sebastian Dröge
ffa30637c4
ptp: Use SO_BINDTOIFINDEX / SO_BINDTODEVICE on Linux
...
This makes sure we really really really only get packets from the
desired interface as passing a device to IP_ADD_MEMBERSHIP apparently
does not have this effect alone.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5584 >
2023-11-02 11:42:44 +00:00
Sebastian Dröge
967aa2abca
ptp: Listen with different sockets on individual interfaces
...
This allows us to portably know on which interface a multicast packet
arrived, and to send back any packets for that clock on the correct
interface.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2728
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5232 >
2023-08-30 12:19:46 +00:00
Sebastian Dröge
c9d9af2fee
ptp: Set port-reuse socket options before binding the socket
...
Otherwise it only works if GStreamer is binding the first socket on this
port.
Unfortunately this requires duplicating a bit more of Rust std because
`UdpSocket` can only be created already bound without allowing to set
any options between socket creation and binding.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4807 >
2023-06-08 13:43:33 +00:00
Sebastian Dröge
b76f9c8392
ptp: Capture actual send/receive times in the helper process
...
While this doesn't yet use any OS provided times from the actual network
stack, this still gets rid of any IPC jitter between the helper process
and the main process as part of the PTP time calculations and should
improve accuracy.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4665 >
2023-05-24 14:16:23 +00:00
Sebastian Dröge
87ca02bee7
ptp: Add logging between the helper process and the main process via stderr
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4647 >
2023-05-19 12:47:28 +00:00
Sebastian Dröge
0219b6f6fa
ptp-helper: Add some tests for functionality and memory safety of unsafe code
...
These tests are mostly for ensuring that the calls to system APIs are
done correctly and that there are no memory bugs (that would be caught
by valgrind) in the unsafe code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4458 >
2023-05-12 17:06:01 +00:00
Sebastian Dröge
9d25a5075e
ptp-helper: Set a process priority / nice value of -5 on UNIX platforms
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3889 >
2023-04-07 15:49:02 +00:00
Sebastian Dröge
572d344482
ptp-helper: Set thread priority to time-critical on Windows
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3889 >
2023-04-07 15:49:02 +00:00
Sebastian Dröge
3fdfcdf2f6
ptp-helper: Rewrite in Rust for portability and security
...
This works on Linux, Android, Windows, macOS, FreeBSD, NetBSD, OpenBSD,
DragonFlyBSD, Solaris and Illumos.
Newly supported compared to the C version is Windows.
Compared to the C version various error paths are handled more correctly
and a couple of memory leaks are fixed. Otherwise it should work identically.
The minimum required Rust version for compiling this is 1.48, i.e. the
version currently in Debian stable. On Windows, Rust 1.54 is needed at
least.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1259
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3889 >
2023-04-07 15:49:02 +00:00