From nobody Fri Apr 17 07:22:53 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4fxmYn742Mz6ZDPj for ; Fri, 17 Apr 2026 07:22:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fxmYn4lqlz3Spx for ; Fri, 17 Apr 2026 07:22:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776410573; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n/KkMuvd86P2u7/vGXiQ4K05s49BU9nR3B04PImOCKc=; b=p6PAFg0m+6A6aIljEf8mzZJA3Kh7cx7y/OcrSOBX+NVNPSy4Jhy2fZA/+7aExmHPGFdw1H 4zuFgbM/mFdH9scRc1tq67tUt1KXvfPmoQxMXYU7xtmJdA7dymzwTWJMUdE/B169Mfb6xX AOH5VHfu8hyMKELSauFy61ygaPbH2stwnAugLflTnxNNRz0ilbU/IBW+LPPZtxXedaRzZV Qr3vcNkgPtmDc8ownYoN4XXRWxIf/AQwgHFjisCcn7nfbcGbfW6fimLWSJDM6III91hhgd CJGxyY30x5f4G/4gKkOPnhIEcfalMvrA/iv8eVVnNYzT17qQoKHPKbkNCx7g7w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1776410573; a=rsa-sha256; cv=none; b=wU+44+LQnTDy6Wt1ZPgrABj2cX9s5MRVyEzSAfDJpBnGc73Rc9ZneIAlr5tfQ3Hn9YWuh8 LusBLH/UxxSiyuWqjsXWy5T8yTzm03hFqtyC74+xKYGEdD5e4Z8L8Q2I57my/0YZbQToxI o2BgHUDyICxOztYurcygOZaDZNfzSTYyKarKF5OnN8lPBkQEEdCtrDQCLKRMIV3/ZxY5Hu DKcKyRQu/1haCGa7kjA4jwB7Qyf64mJuBqPCQ9/nl3e8XXFT56uesERFXgA4OKcm8mpH+8 rOx+kkqJy6DClbLk5BOylQCL/F72x4ZvpsI6dupHQB6lFgGeRdQgYMFXhoia2g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776410573; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n/KkMuvd86P2u7/vGXiQ4K05s49BU9nR3B04PImOCKc=; b=IaKQCee7yh3IltAQjBPhmNmm4eRQGpr9Hfb5PNlzGEYK1Bn4rKJpQX2w+iv6RjhLnTmnu3 RoZw4sBkWBT4IkQNU0+hDG9ya4AqjLgGFdnYq7o+OhZLbhKCX8hk2yHNkne2/+iDVAgeAD ARCzY4IN6pqJSGWwjEUfqelMRStkpqQtqXQE0n6rj8fWiQHL/xnDiX9n4Is0oL1/WuXCRv DMC8vTZ02Yg9gtzExnuPjGXnmi3xSs0yeBLTg6TXo1FZEeHVaTyH7G8YuFngiiR/Ykd3Zh D+whrMcFgvK6mH7Oqxgwsgx5jZZXWJRbrFh+RIuLFucXZHGCJlOjUGY3p7T/ww== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fxmYn3dbczkws for ; Fri, 17 Apr 2026 07:22:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 42e7c by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 17 Apr 2026 07:22:53 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Ricardo Branco From: Pouria Mousavizadeh Tehrani Subject: git: caaa7a07fed4 - main - linux: Support IPPROTO_RAW socket option translation List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pouria X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: caaa7a07fed4a16e753c0064482c0eaa0900607b Auto-Submitted: auto-generated Date: Fri, 17 Apr 2026 07:22:53 +0000 Message-Id: <69e1dfcd.42e7c.4d8a468a@gitrepo.freebsd.org> The branch main has been updated by pouria: URL: https://cgit.FreeBSD.org/src/commit/?id=caaa7a07fed4a16e753c0064482c0eaa0900607b commit caaa7a07fed4a16e753c0064482c0eaa0900607b Author: Ricardo Branco AuthorDate: 2026-04-12 14:08:38 +0000 Commit: Pouria Mousavizadeh Tehrani CommitDate: 2026-04-17 07:22:39 +0000 linux: Support IPPROTO_RAW socket option translation Handle Linux IPPROTO_RAW socket options in the Linuxulator for both getsockopt(2) and setsockopt(2). Detect the socket family and remap the level to IPPROTO_IPV6 for AF_INET6, reusing the existing option translators. This fixes IPV6_CHECKSUM for IPv6 raw sockets, which Linux programs set at level IPPROTO_RAW rather than IPPROTO_IPV6. Signed-off-by: Ricardo Branco PR: 294434 Reviewed by: pouria Pull-Request: https://github.com/freebsd/freebsd-src/pull/2138 --- sys/compat/linux/linux_socket.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c index d971b2a7fbe7..2d20751a41aa 100644 --- a/sys/compat/linux/linux_socket.c +++ b/sys/compat/linux/linux_socket.c @@ -30,6 +30,7 @@ #include #include +#include #include #include #include @@ -2190,6 +2191,26 @@ linux_setsockopt(struct thread *td, struct linux_setsockopt_args *args) } break; #ifdef INET6 + case IPPROTO_RAW: { + struct file *fp; + struct socket *so; + int family; + + error = getsock(td, args->s, &cap_setsockopt_rights, &fp); + if (error != 0) + return (error); + so = fp->f_data; + family = so->so_proto->pr_domain->dom_family; + fdrop(fp, td); + + name = -1; + if (family == AF_INET6) { + name = linux_to_bsd_ip6_sockopt(args->optname); + if (name >= 0) + level = IPPROTO_IPV6; + } + break; + } case IPPROTO_ICMPV6: { struct icmp6_filter f; int i; @@ -2473,6 +2494,26 @@ linux_getsockopt(struct thread *td, struct linux_getsockopt_args *args) } break; #ifdef INET6 + case IPPROTO_RAW: { + struct file *fp; + struct socket *so; + int family; + + error = getsock(td, args->s, &cap_getsockopt_rights, &fp); + if (error != 0) + return (error); + so = fp->f_data; + family = so->so_proto->pr_domain->dom_family; + fdrop(fp, td); + + name = -1; + if (family == AF_INET6) { + name = linux_to_bsd_ip6_sockopt(args->optname); + if (name >= 0) + level = IPPROTO_IPV6; + } + break; + } case IPPROTO_ICMPV6: { struct icmp6_filter f; int i;