Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp2698616rwb; Thu, 17 Nov 2022 14:53:07 -0800 (PST) X-Google-Smtp-Source: AA0mqf7b+BUvEOw/0WpO1ud3UMHdHut7uCJMr3LKcZLAVD3m/FVqwuIgTosr3LfNgrkVUSD/wQOd X-Received: by 2002:a17:906:35d5:b0:7ad:aeda:f814 with SMTP id p21-20020a17090635d500b007adaedaf814mr4014692ejb.441.1668725587413; Thu, 17 Nov 2022 14:53:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668725587; cv=none; d=google.com; s=arc-20160816; b=vlSy/jLHNaiy+efSixuY5Z34YFzBn7B++yjtALRIdW5q1jb8Y/0Hu42PPY3tEbhJ3+ w8tGNkjMznWnmLZSSFLn2FrCgvGfkKapjWAKNMiF1euYto366aY9OVfaj7qvX0TvteXI ELHIAU6Tdn5Ajq09XDqcRXilQgCSW7jojb6QlMeZbxtzETSNnyOdvBjeafOQBXHeHioe rLZ7TXeQ1bY0qRCS2z1NOlD+CiQo5b+divMejV5T6WBst8nJ5n1VYoW0nKnGlrdD+qmC 6gyeslIdA5MHG0OsuxqO02jbAByOuYFvEjUizzTBkcGNbjWYq6amYl2Oi/ra5RaBxhQQ H7OA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=ZIfCf35I7ypehLBPONCdMybY63wBWvIY0HsYk1HXqDc=; b=Hnwh2fsjnmnmAlRnUGhmsAiuL9UpTPkcueG26AI5O4Arvu1xYRI2j8O9Ks9swRIs3H t3lFmPCjKsQDtfEbdj9HYqzeBJZq1RveiqB0cgglyIGqn0p7NWfT7Lsfg1hleJ4VXix2 zJpgVsoYDQnwlMCCciPCv7jaUzeaZz8RFtu6B8Hi7vgCYAmSiRQcBAge5GO8FAIa9HDw us6Abq2m2b/OAt2+zincFZtadF/sHGEFXv5ieMStGY+G1SN5sLErOtWLe23woJ6A/+Vp kb32Na0432YbjozoCXfHLkYoaVm8GSzG5E5L8MPocPFaNF7CNb+X6RPI7Yiu/DAABFMS Z+gQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=FwFpT9rE; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id eg10-20020a056402288a00b0046150eb704csi1665673edb.532.2022.11.17.14.52.45; Thu, 17 Nov 2022 14:53:07 -0800 (PST) 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=@google.com header.s=20210112 header.b=FwFpT9rE; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240846AbiKQVw3 (ORCPT + 92 others); Thu, 17 Nov 2022 16:52:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32974 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240826AbiKQVw0 (ORCPT ); Thu, 17 Nov 2022 16:52:26 -0500 Received: from mail-il1-x136.google.com (mail-il1-x136.google.com [IPv6:2607:f8b0:4864:20::136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 96E93720B6 for ; Thu, 17 Nov 2022 13:52:24 -0800 (PST) Received: by mail-il1-x136.google.com with SMTP id q5so1614371ilt.13 for ; Thu, 17 Nov 2022 13:52:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ZIfCf35I7ypehLBPONCdMybY63wBWvIY0HsYk1HXqDc=; b=FwFpT9rEAOzbFMrQ1oETE5w3UkjxJG2IuYVttzZ2dC1284aFmSpcPVRiNVHQZcU+so RrgucbqQmdEoPE/BmvWYhbHRQHWPyDf5Qvn9dPzT3lMDNGYj+bN+l30DNAsICMaWyM5x 6MIRb64hzBHkuexsAifzULV9iwNA+Np52/yB+fWncqJtKV1T9GoFBnDfZTl49lNSsyqg Dvj4i3R0dSnj/Dn3tbYWx3lurf0ku4zt9sqxvU1JqtGth1EBIECzDZ4wBfU3ikufzXv5 TlsBiS9URvFZUeHMfzBRvbDUv+LoFCQK/5BMahxU49xLbrsDAYeknF3hWxOgB6gATdkk yqZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ZIfCf35I7ypehLBPONCdMybY63wBWvIY0HsYk1HXqDc=; b=QaG2g5q/5eBiAr0J5lCnTcHcSjSCRVULIFvhk8QOCPt5o+RGG+yQ8aCfzwWeoDuE6L 6lUoclS23HFYpfCQC3wP9g9KrBdZNc2W3MsoGp79wYaEnuVxzMGqJiw/ByAqmPeMUpnd epgz9fEIunERIalX+8BheXbFwDu7RdFpz3Y2m2CPnAIm9AUJBsI4D6LFBcTP+1fsdbFn tingzTBE4zKjhxuR8eqw5WLy3hVQB0nRmzbv9SN+rUlDN2U5bx4XPUVlyZ/tCtR4+t1o 3tnkknY/IRgFpYtgdlAiVFfDKcyQcqDtCizbtpWBpYE+YF0Iotfbm3R4zTqF7MGay8EA yYnQ== X-Gm-Message-State: ANoB5pnCf3PSVopGUH7+Y6ubXaSqXyzxKknaqFaUKI2niGIEkmQPQl8J rVsnXZhLzEiR7miTnDLsCdHFg52OqR4SrPz3gYhshbnnU/xKSahjB/k= X-Received: by 2002:a92:c086:0:b0:2ea:ba31:f2ef with SMTP id h6-20020a92c086000000b002eaba31f2efmr2001158ile.159.1668721943842; Thu, 17 Nov 2022 13:52:23 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Stanislav Fomichev Date: Thu, 17 Nov 2022 13:52:12 -0800 Message-ID: Subject: Re: [PATCH bpf-next v2] selftests/bpf: Fix error: undeclared identifier 'NF_NAT_MANIP_SRC' To: Rong Tao Cc: andrii.nakryiko@gmail.com, andrii@kernel.org, ast@kernel.org, bpf@vger.kernel.org, daniel@iogearbox.net, dxu@dxuuu.xyz, haoluo@google.com, john.fastabend@gmail.com, jolsa@kernel.org, kpsingh@kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, lkp@intel.com, lorenzo@kernel.org, martin.lau@linux.dev, memxor@gmail.com, mykolal@fb.com, rongtao@cestc.cn, shuah@kernel.org, song@kernel.org, yhs@fb.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL autolearn=unavailable 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 On Thu, Nov 17, 2022 at 7:17 AM Rong Tao wrote: > > From: Rong Tao > > commit 472caa69183f("netfilter: nat: un-export nf_nat_used_tuple") > introduce NF_NAT_MANIP_SRC/DST enum in include/net/netfilter/nf_nat.h, > and commit b06b45e82b59("selftests/bpf: add tests for bpf_ct_set_nat_info > kfunc") use NF_NAT_MANIP_SRC/DST in test_bpf_nf.c. > > In bpf kself-test config (tools/testing/selftests/bpf/config) nf_nat > is compiled as built-in, this issue occurs just if it is compiled as > module. We could use BPF CO-RE and ___suffix rule to avoid this. > > How to reproduce the error: > > $ make -C tools/testing/selftests/bpf/ > ... > CLNG-BPF [test_maps] test_bpf_nf.bpf.o > error: use of undeclared identifier 'NF_NAT_MANIP_SRC' > bpf_ct_set_nat_info(ct, &saddr, sport, NF_NAT_MANIP_SRC); > ^ > error: use of undeclared identifier 'NF_NAT_MANIP_DST' > bpf_ct_set_nat_info(ct, &daddr, dport, NF_NAT_MANIP_DST); > ^ > 2 errors generated. > > Signed-off-by: Rong Tao > --- > v2: use BPF CO-RE and ___suffix rule to avoid this error. > v1: https://lore.kernel.org/lkml/tencent_29D7ABD1744417031AA1B52C914B61158E07@qq.com/ > --- > .../testing/selftests/bpf/progs/test_bpf_nf.c | 30 +++++++++++++++++-- > 1 file changed, 27 insertions(+), 3 deletions(-) > > diff --git a/tools/testing/selftests/bpf/progs/test_bpf_nf.c b/tools/testing/selftests/bpf/progs/test_bpf_nf.c > index 227e85e85dda..1706984e1a6a 100644 > --- a/tools/testing/selftests/bpf/progs/test_bpf_nf.c > +++ b/tools/testing/selftests/bpf/progs/test_bpf_nf.c > @@ -2,6 +2,7 @@ > #include > #include > #include > +#include > > #define EAFNOSUPPORT 97 > #define EPROTO 71 > @@ -11,6 +12,11 @@ > > extern unsigned long CONFIG_HZ __kconfig; > > +enum nf_nat_manip_type___x { > + NF_NAT_MANIP_SRC___x, > + NF_NAT_MANIP_DST___x, > +}; > + > int test_einval_bpf_tuple = 0; > int test_einval_reserved = 0; > int test_einval_netns_id = 0; > @@ -58,7 +64,7 @@ int bpf_ct_change_timeout(struct nf_conn *, u32) __ksym; > int bpf_ct_set_status(struct nf_conn *, u32) __ksym; > int bpf_ct_change_status(struct nf_conn *, u32) __ksym; > int bpf_ct_set_nat_info(struct nf_conn *, union nf_inet_addr *, > - int port, enum nf_nat_manip_type) __ksym; > + int port, int type) __ksym; > > static __always_inline void > nf_ct_test(struct nf_conn *(*lookup_fn)(void *, struct bpf_sock_tuple *, u32, > @@ -151,16 +157,34 @@ nf_ct_test(struct nf_conn *(*lookup_fn)(void *, struct bpf_sock_tuple *, u32, > union nf_inet_addr saddr = {}; > union nf_inet_addr daddr = {}; > struct nf_conn *ct_ins; > + int manip_src; > + int manip_dst; > + enum nf_nat_manip_type___x mapip_type_x; > + > + if (!bpf_core_type_exists(enum nf_nat_manip_type)) { > + bpf_printk("enum nf_nat_manip_type not exist.\n"); > + return; > + } > + > + if (bpf_core_enum_value_exists(mapip_type_x, NF_NAT_MANIP_SRC___x)) > + manip_src = bpf_core_enum_value(mapip_type_x, NF_NAT_MANIP_SRC___x); > + else > + return; > + > + if (bpf_core_enum_value_exists(mapip_type_x, NF_NAT_MANIP_DST___x)) > + manip_dst = bpf_core_enum_value(mapip_type_x, NF_NAT_MANIP_DST___x); > + else > + return; > > bpf_ct_set_timeout(ct, 10000); > ct->mark = 77; > > /* snat */ > saddr.ip = bpf_get_prandom_u32(); > - bpf_ct_set_nat_info(ct, &saddr, sport, NF_NAT_MANIP_SRC); > + bpf_ct_set_nat_info(ct, &saddr, sport, manip_src); I'm not sure these co-re checks are helpful. Can we just hardcode 1/0 here and below? bpf_ct_set_nat_info(ct, &saddr, sport, 0 /*NF_NAT_MANIP_SRC*/); bpf_ct_set_nat_info(ct, &daddr, dport, 1 /*NF_NAT_MANIP_DST*/); But I'm also overall not sure we need to make this test flexible; we have a lot of tests that depend on tools/testing/selftests/bpf/config; at some point I was trying to make the tests more tolerant to different environments, but it went nowhere.. > /* dnat */ > daddr.ip = bpf_get_prandom_u32(); > - bpf_ct_set_nat_info(ct, &daddr, dport, NF_NAT_MANIP_DST); > + bpf_ct_set_nat_info(ct, &daddr, dport, manip_dst); > > ct_ins = bpf_ct_insert_entry(ct); > if (ct_ins) { > -- > 2.31.1 >