From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id D37BA4051A for ; Wed, 26 Jan 2022 00:33:58 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8A1FD68B06F; Wed, 26 Jan 2022 02:33:55 +0200 (EET) Received: from mail-vk1-f180.google.com (mail-vk1-f180.google.com [209.85.221.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 47A5968AF2A for ; Wed, 26 Jan 2022 02:33:48 +0200 (EET) Received: by mail-vk1-f180.google.com with SMTP id b77so13414931vka.11 for ; Tue, 25 Jan 2022 16:33:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=triularity-org.20210112.gappssmtp.com; s=20210112; h=message-id:date:mime-version:user-agent:subject:content-language:to :references:from:in-reply-to:content-transfer-encoding; bh=aPN1qUgWev+gYs7S/moYzQXHaisNAGbIMknZyzby11A=; b=ZGPBBawaIbKCNETfy5lW9W7OLWNeI7Y+ZSA1aGN3F6gfI5/EkJRUzmCa8m94rth/D0 CVCnBDV4CYIn4tsBOafcROQ+uLXlRHrxBQqPjHDpYKrMWcEUke39twbDmPcGYjgxyLMv 9GJja6OyEAu3QpCfLFIaOYbMDdBLKY6COAe8esesMZUzczX3kH4qb/kSDB1yPtKAZWU1 SmmCIFaw26bHpHGb257oz3ilf0AezijMztpQvnNpXVSwk52q0PkMm4+TONWfSwpR6DlL kkm3k9z6dqJCrr+ZL5TFptcpWlWJNtX+I9CpFSa0YwuQM42QWwoCmdRRSh4GaoFjSQg+ fb1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:in-reply-to :content-transfer-encoding; bh=aPN1qUgWev+gYs7S/moYzQXHaisNAGbIMknZyzby11A=; b=btE5cq9PC7fNbynl4GMqLUyZNvE9WZ2isLcaOjKkKEaf4hXaoyqV5dGcr0nrWyn1p3 y57aa6MHmvkoxwMrHkbmmsaYP5zVhJlb66wepC7r65Go5Ro7LYxHNkm47EjOWdcbx/7c /pZN3lqzXZ7d4dpGzfUY43qQ0/rFdlEVyyl6LQk6681ttSGVhPdqN4wDRfq3lDA8Qura /X+qL9DgBmFfAp8C0VNAWZoS6CkyLztwtrYi4vHiWvRNSYJmKE21xGXumRsG+yXFN7pz GG/jJ6+kZ1DfZSVGGGYXmI/71O7zmlvT3/S2i7HPQ4a7BROxtJeEq2BZRkrMTswfsy2k 5rLw== X-Gm-Message-State: AOAM531Sp66rMdKs8rbntB81ZxUE7SNkR5lLCpNNhN2T5BLOk4udXI3y ihqXX5Bmuqn/FmPePvd75oOxOAaJH5gfT11B X-Google-Smtp-Source: ABdhPJx5ZFV53RnwHkpBeovOnzVqrrVZR7ZSxtRK61bQyd0fYKjCdTaLgmhkiDHxVDVKLML6nH42qg== X-Received: by 2002:a17:902:ab8f:b0:14a:adaa:93f2 with SMTP id f15-20020a170902ab8f00b0014aadaa93f2mr20557226plr.131.1643156913952; Tue, 25 Jan 2022 16:28:33 -0800 (PST) Received: from ?IPV6:2601:603:5000:f89:3ca7:2011:9c45:c40e? ([2601:603:5000:f89:3ca7:2011:9c45:c40e]) by smtp.gmail.com with ESMTPSA id b24sm130046pgs.1.2022.01.25.16.28.33 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 25 Jan 2022 16:28:33 -0800 (PST) Message-ID: <8e52c403-c58c-98d0-ccca-e5549c9d88ea@triularity.org> Date: Tue, 25 Jan 2022 16:28:33 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220125072514.GA19401@gmail.com> From: Chad Fraleigh In-Reply-To: <20220125072514.GA19401@gmail.com> Subject: Re: [FFmpeg-devel] [PATCH] Fix setsockopt IP_MULTICAST_TTL on OpenBSD X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Since apparently linux will auto-detect (as mentioned by Marton Balint), based on the optlen parameter, just using unsigned char in all cases seems to be the cleanest. However, I would advise including a comment in the code to that effect which says to ignore the [outdated] linux documentation (so someone doesn't needlessly "correct" it in the future). I looked at the kernel source and it does work both ways: static int do_ip_setsockopt(struct sock *sk, int level, int optname, sockptr_t optval, unsigned int optlen) { ... switch (optname) { ... case IP_MULTICAST_TTL: ... if (optlen >= sizeof(int)) { if (copy_from_sockptr(&val, optval, sizeof(val))) return -EFAULT; } else if (optlen >= sizeof(char)) { unsigned char ucval; if (copy_from_sockptr(&ucval, optval, sizeof(ucval))) return -EFAULT; val = (int) ucval; } } ... } This check has been in the kernel since at least 2.6.12-rc2 (from Apr 2005). It should work fine, unless newer ffmpeg builds support is needed on older systems. So the only question is how old are the kernels in IoT and android devices which might use the current ffmpeg? On 1/24/2022 11:25 PM, lance.lmwang@gmail.com wrote: > On Wed, Jan 12, 2022 at 12:13:13AM -0500, Brad Smith wrote: >> Fix setsockopt() usage on OpenBSD with IP_MULTICAST_TTL. The field >> type should be an unsigned char on anything but Linux. >> >> >> diff --git a/libavformat/udp.c b/libavformat/udp.c >> index 180d96a988..29aa865fff 100644 >> --- a/libavformat/udp.c >> +++ b/libavformat/udp.c >> @@ -163,7 +163,13 @@ static int udp_set_multicast_ttl(int sockfd, int mcastTTL, >> { >> #ifdef IP_MULTICAST_TTL >> if (addr->sa_family == AF_INET) { >> - if (setsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_TTL, &mcastTTL, sizeof(mcastTTL)) < 0) { >> +#ifdef __linux__ >> + int ttl = mcastTTL; >> +#else >> + unsigned char ttl = mcastTTL; >> +#endif > > > I don't have BSD system for test, but I prefer to use socklen_t, please try with my proposal patch: > > --- > libavformat/udp.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/libavformat/udp.c b/libavformat/udp.c > index 83c042d079..b9baa0a803 100644 > --- a/libavformat/udp.c > +++ b/libavformat/udp.c > @@ -164,7 +164,9 @@ static int udp_set_multicast_ttl(int sockfd, int mcastTTL, > { > #ifdef IP_MULTICAST_TTL > if (addr->sa_family == AF_INET) { > - if (setsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_TTL, &mcastTTL, sizeof(mcastTTL)) < 0) { > + socklen_t ttl = mcastTTL; > + > + if (setsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl)) < 0) { > ff_log_net_error(logctx, AV_LOG_ERROR, "setsockopt(IP_MULTICAST_TTL)"); > return ff_neterrno(); > > >> + >> + if (setsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl)) < 0) { >> ff_log_net_error(NULL, AV_LOG_ERROR, "setsockopt(IP_MULTICAST_TTL)"); >> return ff_neterrno(); >> } >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> >> To unsubscribe, visit link above, or email >> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".