From bfa2a06d17166b3703a9833b4cd6396711230fb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C3=ABl=20Carr=C3=A9?= Date: Fri, 13 Sep 2024 16:28:17 +0200 Subject: [PATCH] udpsink: set ifindex --- lib/upipe-modules/upipe_udp_sink.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/upipe-modules/upipe_udp_sink.c b/lib/upipe-modules/upipe_udp_sink.c index f34cd502e..2ec6ee45e 100644 --- a/lib/upipe-modules/upipe_udp_sink.c +++ b/lib/upipe-modules/upipe_udp_sink.c @@ -54,6 +54,7 @@ #include #include #include +#include /** tolerance for late packets */ #define SYSTIME_TOLERANCE UCLOCK_FREQ @@ -289,6 +290,17 @@ static bool upipe_udpsink_output(struct upipe *upipe, struct uref *uref, .msg_flags = 0, }; + uint8_t ancillary[CMSG_SPACE(sizeof(struct in_pktinfo))]; + uint64_t ifindex; + if (ubase_check(uref_block_get_net_ifindex(uref, &ifindex))) { + struct in_pktinfo *info = (void*)ancillary; + info->ipi_ifindex = ifindex; + info->ipi_spec_dst.s_addr = 0, + info->ipi_addr.s_addr = 0, + msghdr.msg_control = ancillary; + msghdr.msg_controllen = sizeof(ancillary); + } + ssize_t ret = sendmsg(upipe_udpsink->fd, &msghdr, 0); uref_block_iovec_unmap(uref, 0, -1, iovecs);