From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3C28DC433DF for ; Thu, 16 Jul 2020 02:19:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 165B32076C for ; Thu, 16 Jul 2020 02:19:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="N10qrTj3" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727075AbgGPCTv (ORCPT ); Wed, 15 Jul 2020 22:19:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47876 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726770AbgGPCTu (ORCPT ); Wed, 15 Jul 2020 22:19:50 -0400 Received: from mail-qk1-x742.google.com (mail-qk1-x742.google.com [IPv6:2607:f8b0:4864:20::742]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A0DD2C061755; Wed, 15 Jul 2020 19:19:50 -0700 (PDT) Received: by mail-qk1-x742.google.com with SMTP id b4so4101121qkn.11; Wed, 15 Jul 2020 19:19:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=529eT/i/WJuLhFmUkFuyxkO48c99UyjFqkTt/oa7tJg=; b=N10qrTj3n2eNBsRJZ/ARMifpBeg4AEtSXSGkijPXsZ8aV7nwiyRpVAp1ZiVrIp3iSW 94WBh3lzqOQUPKtqJkiJocrJ7atY/Zhe0k0LvzPNocj72A1mfOFy/onmXUrlEtWHV5su ZecG931BFzHqnXCpgr2J5RKHAc9w5s0tbJSNW+gXZT5VhMnJeVuGoyLxuPrcTub/W+rb k66HbsCAB9m6wGmc2MH9hNV8Dhy3wM8SQ3jxToo2zL2aBkpySpxm6blvT3yr4WkA0yxy G283C6T9ntmzmBxAmhkO0FmXxpOdPa9ebNe+I1+UBUCmJIRCVAix97yHH0kyA0IM8w7Q YoSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=529eT/i/WJuLhFmUkFuyxkO48c99UyjFqkTt/oa7tJg=; b=VUlZl/iKKRVuHS/kWqlK4OmvMrLHIEaj4a0UPqiWxAqtonGPVE2tpH0gBVURGYVJ8z ycLjwgUrFoXSW08tH4NWolK7/9wTOYw4nUqbgEPkOx6hMA44YrXIdd7awNdjxLRh8hga M4GtmXbloF7NbC52W2Cmijv0vt6YHJJqG+hGwja5FujgMOoeLyrF2TE9jFt9jlS2kZrM cfIk2vKcgZwqLjFT39XZG3MBhTD0v6fdkVZifkvIKcUGshZvhz46qIyR1T+hDADpESEp 8eDsKUcjVbB5jUUvw5wDFwyjNRRnbZpyoOSOVXFZoxwFDE8Gt3PeFQZHjAR+llojpVsg bS8w== X-Gm-Message-State: AOAM533Dn1+08jb/5YqK710UlljwRys+Z5H0zL9glAnv9M13UzSmYMtr CPRDna0lL9ltOgOT5LoSfWBPvJAnZPrUFiebEbHe1sJ6 X-Google-Smtp-Source: ABdhPJy5voGj/Qe4PfXrmen0FZXKM38fE5qw95dBb6AC0Mxf4ur6dtBUaXUxqFtpt3Op9DiSRnUmJOaT575GilcqmKc= X-Received: by 2002:a05:620a:2409:: with SMTP id d9mr2029658qkn.36.1594865989876; Wed, 15 Jul 2020 19:19:49 -0700 (PDT) MIME-Version: 1.0 References: <20200713174654.642628-1-jakub@cloudflare.com> <20200713174654.642628-17-jakub@cloudflare.com> In-Reply-To: <20200713174654.642628-17-jakub@cloudflare.com> From: Andrii Nakryiko Date: Wed, 15 Jul 2020 19:19:39 -0700 Message-ID: Subject: Re: [PATCH bpf-next v4 16/16] selftests/bpf: Tests for BPF_SK_LOOKUP attach point To: Jakub Sitnicki Cc: bpf , Networking , kernel-team , Alexei Starovoitov , Daniel Borkmann , "David S. Miller" , Jakub Kicinski Content-Type: text/plain; charset="UTF-8" Sender: bpf-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org On Mon, Jul 13, 2020 at 10:48 AM Jakub Sitnicki wrote: > > Add tests to test_progs that exercise: > > - attaching/detaching/querying programs to BPF_SK_LOOKUP hook, > - redirecting socket lookup to a socket selected by BPF program, > - failing a socket lookup on BPF program's request, > - error scenarios for selecting a socket from BPF program, > - accessing BPF program context, > - attaching and running multiple BPF programs. > > Run log: > > # ./test_progs -n 69 > #69/1 query lookup prog:OK > #69/2 TCP IPv4 redir port:OK [...] > #69/42 multi prog - drop, redir:OK > #69/43 multi prog - redir, drop:OK > #69/44 multi prog - redir, redir:OK > #69 sk_lookup:OK > Summary: 1/44 PASSED, 0 SKIPPED, 0 FAILED > > Signed-off-by: Jakub Sitnicki > --- > nit: It's not universal, unfortunately, but the typical naming pattern for selftest are: progs/test_.c for BPF part, and prog_tests/.c for user-space part. Just FYI for the future. But looks good to me either way. Acked-by: Andrii Nakryiko > Notes: > v4: > - Remove system("bpftool ...") call left over from debugging. (Lorenz) > - Dedup BPF code that selects a socket. (Lorenz) > - Switch from CHECK_FAIL to CHECK macro. (Andrii) > - Extract a network_helper that wraps inet_pton. > - Don't restore netns now that test_progs does it. > - Cover bpf_sk_assign(ctx, NULL) in tests. > - Cover narrow loads in tests. > - Cover NULL ctx->sk access attempts in tests. > - Cover accessing IPv6 ctx fields on IPv4 lookup. > > v3: > - Extend tests to cover new functionality in v3: > - multi-prog attachments (query, running, verdict precedence) > - socket selecting for the second time with bpf_sk_assign > - skipping over reuseport load-balancing > > v2: > - Adjust for fields renames in struct bpf_sk_lookup. > > tools/testing/selftests/bpf/network_helpers.c | 58 +- > tools/testing/selftests/bpf/network_helpers.h | 2 + > .../selftests/bpf/prog_tests/sk_lookup.c | 1282 +++++++++++++++++ > .../selftests/bpf/progs/test_sk_lookup_kern.c | 639 ++++++++ > 4 files changed, 1958 insertions(+), 23 deletions(-) > create mode 100644 tools/testing/selftests/bpf/prog_tests/sk_lookup.c > create mode 100644 tools/testing/selftests/bpf/progs/test_sk_lookup_kern.c > [...]