From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 765E54E0CE for ; Mon, 12 Jan 2026 19:42:28 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'U0GU+Jybrny0zi3oj/nalNEQPcdpxPu6+VV1lOJ0ooM=', expected b'MQfHWtup4YPihLnBmk6MBhJcr/PUdE+X8NSR+cnjLSQ=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1768246939; h=mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=U0GU+Jybrny0zi3oj/nalNEQPcdpxPu6+VV1lOJ0ooM=; b=4w073hIpRDNK4P+cWNAgcNK87fHTDsw5zty7+aXRgSusaqiHapyKg2zTQUWgdg3EYwJM2 3DFYWJFCN3XFAY+PYnU9UMwDgYQvfCw2yIrFCIGHxsWsSmiAO0AjGCgq2zT+o3sSqEZJ2En aN24Nbs75u8qwZMedAVHRZngBkjyuQiSTSrLbHNO+OEuQvBM9b7t/5i4a1fsD2Y6kI6Vedr HKjW6B+geTcCOxlAoYadwP9W4c41hHYblZvxYUbMhvE0TE3JjHNJ1rm8yzCaJxQR73O8FhS BB066O6B45WP+JV6J+7cCmqlud695yEoiTeQm4p1A7uFomjPo4vCgUCrgQbQ== Received: from [172.20.0.4] (unknown [172.20.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id ADED8690D9F; Mon, 12 Jan 2026 21:42:19 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1768246926; b=lEwpGX1ejqitMBGaJjNch2DcKmka8+E/38pBNQKkBGkwxPqFtiDn0GV/ko+FEqpfcTCwp B4mGAcmLYcxQDv+XMCkfJNGNNafJYMxjam1Q6xsg6uFfEKLwT1XDsfeqjw0euIO8tfy4QAa TJaagngjV0xP26g5Up2FQ+k1qM+nB71Hbz48CYkEbSP+pRad6gKbJT2BhS/uW/9nqdnzBQr f39F9C88DklPnv6KhApfOJVn9l0tuS4KpuyxJuj45rWAgDPJWTpKHVX77gd5kbKg4DNQnqC XS9Q5UkjOIgTa24aseHQYtIVQ307fqts+YI7w9DEJifHcsviKTr1qmYmiZQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1768246926; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=aFz5/wBKXQj9/T2Hw0xns4tEIxarMQkl9hNy7sA+d/E=; b=slzN9CwzWHJnT9+S+Mo/xYnAsLS8MC9ydyowYS56Q5VspMHDShW7oQNXKS1hAqFc86iJg j5sq3LoohafUnIlCzbrJfDZuW5+CgBwyS+sOCronfL6rQMmsXBp0Jo1R4DvTwPEU8IW3X9b 1kkVfgKY6n/oIc0F8X09GlPDm5Q35BTKqP0PI++lFoltIqcD2ykOANpnpYqT6eu7k97YhdI jRyJkH2wNvM2DHlTjD+T1uXhcIIiSIg6R/hx4FTgK/5QfXT/1yt57zqHVSgS7sby5ecwOJ/ Np2xwx2h3ZSriogqTMqSgeWj1YSxPIg7tCpI2tn1t7LI5ra6ccB36+KQn5VQ== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1768246917; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=MQfHWtup4YPihLnBmk6MBhJcr/PUdE+X8NSR+cnjLSQ=; b=R5A8UnfNu51hyFyTwRiHLXU7MpTspSBFaUG0jRe3EBrZmOk3Vsfy2ZNVFH3OI3coJT42l 7rD71lPPvUOHblX9ZJqQqboNI2++1s1OOMwux7CR3ZgJd60gJhjlXYGRgqCpFA4+C4TBh1/ fLdG9juG99JDxqyxTiXkV3EtUhkQS2jKRhx6uLQ139LzJ3aI7oFLmyk865a8sQ6GPFh77eW xQmrwevpV+SoqSyW59GBM2uedXuNZFAXKsu9LwNfy55Ue8Yy6aig3jLJd8JbjKB6OPyu5qj aEyXUSsZg2gBooWcGBxgUIMDX8fLvwHkBjGv1SdUJ0w01NuYyeTDQshkEHjg== Received: from f7c34508609e (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 111DA690CCA for ; Mon, 12 Jan 2026 21:41:57 +0200 (EET) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Mon, 12 Jan 2026 19:41:56 -0000 Message-ID: <176824691725.25.4157081523663418539@4457048688e7> Message-ID-Hash: A5FOHXHLKMMTTACFJTA3ZBXHS3B7WJ3I X-Message-ID-Hash: A5FOHXHLKMMTTACFJTA3ZBXHS3B7WJ3I X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PR] UDP: Join multicast group in local_addr interface (PR #21439) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: arf20 via ffmpeg-devel Cc: arf20 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #21439 opened by arf20 URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21439 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21439.patch Implement `//TODO: Interface index should be looked up from local_addr` at libavformat/udp.c Previously the multicast join request used 0 (default interface) as mreq6.ipv6mr_interface when joining Link-Local scoped IPv6 multicast groups. This lets the kernel choose whatever interface it deems fit. This, as described in the TODO comment, is not good behaviour, it was unexpected for users (me). Now the group will be joined to the same interface it is bound to as per parameter localaddr at the field sin6_scope_id of the sockaddr_in6 local_addr. If localaddr is not a Link-Local scoped (i.e. does not have a % interface designator) getaddrinfo(3) will set this to 0, which the kernel will correctly handle for globally routable address with the routing table. >>From d8ca5711deca795fb5d8b2c64414fa28de3c36c8 Mon Sep 17 00:00:00 2001 From: arf20 Date: Mon, 12 Jan 2026 20:36:46 +0100 Subject: [PATCH] Join multicast group in local_addr interface --- libavformat/udp.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libavformat/udp.c b/libavformat/udp.c index 61e80c86c5..ba52621673 100644 --- a/libavformat/udp.c +++ b/libavformat/udp.c @@ -232,8 +232,10 @@ static int udp_join_multicast_group(int sockfd, struct sockaddr *addr, struct ipv6_mreq mreq6; memcpy(&mreq6.ipv6mr_multiaddr, &(((struct sockaddr_in6 *)addr)->sin6_addr), sizeof(struct in6_addr)); - //TODO: Interface index should be looked up from local_addr - mreq6.ipv6mr_interface = 0; + if (local_addr) + mreq6.ipv6mr_interface = ((struct sockaddr_in6*)local_addr)->sin6_scope_id; + else + mreq6.ipv6mr_interface = 0; if (setsockopt(sockfd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, &mreq6, sizeof(mreq6)) < 0) { ff_log_net_error(logctx, AV_LOG_ERROR, "setsockopt(IPV6_ADD_MEMBERSHIP)"); return ff_neterrno(); -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org