Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp990287rwd; Tue, 13 Jun 2023 03:20:18 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4NlvjM66F2vUYPAWcM3Yg6rWx3nQlCACnjY4RRywdT4P6vlWJ0ZOhO5E0ArnJosdnd94E4 X-Received: by 2002:a17:902:8502:b0:1ae:8892:7d27 with SMTP id bj2-20020a170902850200b001ae88927d27mr8908184plb.42.1686651617734; Tue, 13 Jun 2023 03:20:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686651617; cv=none; d=google.com; s=arc-20160816; b=hxY2scMwzC1KisKWfy3nzFkw8m24LjYR7qmNtwwhXf8fxRHCxZack4sAap6H48SyFI Z/wa23T3dLTMenEeTcrd8lcfrQUg/IQ753F8IIqRDWk4mfvbVb3WyZTytdsmZVwcTb3v gZFg5C1FL8SxEvGL3NZenC83+JmLHHYPiTdoHaFhrEAniFiUSpPuFtmHu+yoK9ko3gHF WPZWrbybOOjaCMllPEUOsFcvthksVO4Y4ERBgeKAT5/Yub6HNLrLJ8EazOUFwbmKCBwb i7w+5ArTIFdlNJzb99SHDjLm7OqZk7elZOq2LZN8mOT1qD28RQy40HRnLIeDa/hcQtV4 lbmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:content-transfer-encoding:mime-version :message-id:date:subject:from:dkim-signature; bh=E2rY2E6D+8oZww/s6pZwAJAnOm0HX7caGb8hYSApwkk=; b=mcJjC7T9jqOFz2iHrdhN5uZ7hBjap+sJNkFqgCxe59LXikoqZDHqTs+FFlJcT4Fx+H hEdVRnjk2iArKPuFjJ9dE70IWP70Qr3Rf0CSCUTnIwEaUeT2rwbwTY+EPbg2QdVb4BuQ MDqiIr4xAYWJxbaxcYejrAHXgCZnj8szqQd3cQkfovYeeyFJHhQ2Lw3CxTNa8qdQ21qd uWaSkkPUANkNYD7xOKKYyGbFOz/DdzhdDk9/k8GSJ4DFJTOK7SjNTKgSAFuhHd+Dcjpa KBg1a636GGINVy0N/vlHbOw+yac3/5VTtcf9s/3dpLYfut1z9137HXRYuruHnnQR2o9O JSWw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@isovalent.com header.s=google header.b=N2eh1qFF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=isovalent.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id kv8-20020a17090328c800b001ade5e66c39si8400514plb.114.2023.06.13.03.20.05; Tue, 13 Jun 2023 03:20:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@isovalent.com header.s=google header.b=N2eh1qFF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=isovalent.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240821AbjFMKPD (ORCPT + 99 others); Tue, 13 Jun 2023 06:15:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47558 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232386AbjFMKPB (ORCPT ); Tue, 13 Jun 2023 06:15:01 -0400 Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0D12313A for ; Tue, 13 Jun 2023 03:15:00 -0700 (PDT) Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-30e3caa6aa7so5265562f8f.1 for ; Tue, 13 Jun 2023 03:14:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=isovalent.com; s=google; t=1686651298; x=1689243298; h=cc:to:content-transfer-encoding:mime-version:message-id:date :subject:from:from:to:cc:subject:date:message-id:reply-to; bh=E2rY2E6D+8oZww/s6pZwAJAnOm0HX7caGb8hYSApwkk=; b=N2eh1qFFzWhwKedcB6rJTdohEMIovo8r4HL1dbMAK7fCafO8iorJVG7M/yIW0+4wKn 0iXMYd/OYFcWPYfnfRVxLTpMjKMUvMwWqaiG7ccSgIIgRdQzEXThxKvnq8VIUIOWg6MG ObadDouxom16RacsAMbDim3lGMidBi/l++OdNp7KyEqq7+uUC6rqJDfBJmynCbQYycBj 72GiSWho1X55JR8MKrKy1X+eB76x7cp5m0AodJm4fJgqXAOOBCMKEIe/pVvuBZl75/78 PqRPPMo/1MIb3nRxQNP0SrCLfKQho3DjhGvNQlCMHBh0SzqotRHMpMKa3kEYopk+5ow5 7gQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686651298; x=1689243298; h=cc:to:content-transfer-encoding:mime-version:message-id:date :subject:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=E2rY2E6D+8oZww/s6pZwAJAnOm0HX7caGb8hYSApwkk=; b=Xxr8cmFIyTTxcQA0JYjmqrlvtMp0bKVSgBUzpEpn272UNbbC1yGG5YBXuwg9zLdcLJ /RoZMlWXAQnLlboGSodTH5K0Lhrp15tVNRsg8j8QjLG+OjTXnzQCb9E79hwDpcRjU2I9 5QOpVgNjid66l8y6yJMjZ6BYgBZ3cTZdGJ8ASnZaMgUGC8YWUm6Cj5gyemjugZ0bnp7Z NoWXJB+fytfo/IEPOySsej7Oj2g4LKzl/MCbneA4jHb3z7XXapEwWDCaApnxL2do94to 3jzyEqvLQ4EgTDDWrI+GAJpp62eHkpAxSi05mSKWXQAdHqicDRNkQaQRL5AwOZ+jb91Y X0Ow== X-Gm-Message-State: AC+VfDyPorQMC/L9qvAK4v0sqjd2MqRFKDA/rsFa6P2UOIkElNm6+KRZ 2E3rKRzn9wL7qNQdotA+Zu57QQ== X-Received: by 2002:a05:6000:1951:b0:30e:5428:c322 with SMTP id e17-20020a056000195100b0030e5428c322mr6153431wry.44.1686651298384; Tue, 13 Jun 2023 03:14:58 -0700 (PDT) Received: from [192.168.133.193] ([5.148.46.226]) by smtp.gmail.com with ESMTPSA id k15-20020a5d6e8f000000b0030e6096afb6sm15075020wrz.12.2023.06.13.03.14.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jun 2023 03:14:57 -0700 (PDT) From: Lorenz Bauer Subject: [PATCH bpf-next v2 0/6] Add SO_REUSEPORT support for TC bpf_sk_assign Date: Tue, 13 Jun 2023 11:14:55 +0100 Message-Id: <20230613-so-reuseport-v2-0-b7c69a342613@isovalent.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-B4-Tracking: v=1; b=H4sIAJ9BiGQC/02NQQrCMBBFr1Jm7UCbYEWvIi6S+Gtnk4SZKoXSu 5u6cvl4//E3MqjA6NZtpPiISckN3KmjNIf8AsuzMbne+X4cPFthxdtQiy6Mq0tnNw4XD1BLYjB w1JDTfET/20NXxSTr7+1OsU6csS702Pcvt0gtuYcAAAA= To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , David Ahern , Willem de Bruijn , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Joe Stringer , Mykola Lysenko , Shuah Khan , Kuniyuki Iwashima Cc: Hemanth Malla , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, Lorenz Bauer , Joe Stringer X-Mailer: b4 0.12.2 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We want to replace iptables TPROXY with a BPF program at TC ingress. To make this work in all cases we need to assign a SO_REUSEPORT socket to an skb, which is currently prohibited. This series adds support for such sockets to bpf_sk_assing. See patch 5 for details. I did some refactoring to cut down on the amount of duplicate code. The key to this is to use INDIRECT_CALL in the reuseport helpers. To show that this approach is not just beneficial to TC sk_assign I removed duplicate code for bpf_sk_lookup as well. Changes from v1: - Correct commit abbrev length (Kuniyuki) - Reduce duplication (Kuniyuki) - Add checks on sk_state (Martin) - Split exporting inet[6]_lookup_reuseport into separate patch (Eric) Joint work with Daniel Borkmann. Signed-off-by: Lorenz Bauer --- Daniel Borkmann (1): selftests/bpf: Test that SO_REUSEPORT can be used with sk_assign helper Lorenz Bauer (5): net: export inet_lookup_reuseport and inet6_lookup_reuseport net: document inet[6]_lookup_reuseport sk_state requirements net: remove duplicate reuseport_lookup functions net: remove duplicate sk_lookup helpers bpf, net: Support SO_REUSEPORT sockets with bpf_sk_assign include/net/inet6_hashtables.h | 84 ++++++++- include/net/inet_hashtables.h | 77 +++++++- include/net/sock.h | 7 +- include/uapi/linux/bpf.h | 3 - net/core/filter.c | 2 - net/ipv4/inet_hashtables.c | 69 +++++--- net/ipv4/udp.c | 73 +++----- net/ipv6/inet6_hashtables.c | 71 +++++--- net/ipv6/udp.c | 85 +++------ tools/include/uapi/linux/bpf.h | 3 - tools/testing/selftests/bpf/network_helpers.c | 3 + .../selftests/bpf/prog_tests/assign_reuse.c | 197 +++++++++++++++++++++ .../selftests/bpf/progs/test_assign_reuse.c | 142 +++++++++++++++ 13 files changed, 637 insertions(+), 179 deletions(-) --- base-commit: 25085b4e9251c77758964a8e8651338972353642 change-id: 20230613-so-reuseport-e92c526173ee Best regards, -- Lorenz Bauer