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
354623a246
gstreamer: ptp-helper: Don't import Context
trait multiple times unnecessarily
...
This only affected the Solaris / Illumos code path.
Patch by Marcel Telka <marcel@telka.sk>.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3551
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6925 >
2024-05-26 12:34:21 +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
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
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