From patchwork Mon Nov 1 14:52:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ananyev, Konstantin" X-Patchwork-Id: 103350 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B7753A0C57; Mon, 1 Nov 2021 15:52:55 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 77D8F40E28; Mon, 1 Nov 2021 15:52:54 +0100 (CET) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mails.dpdk.org (Postfix) with ESMTP id DD70F40DF6 for ; Mon, 1 Nov 2021 15:52:52 +0100 (CET) X-IronPort-AV: E=McAfee;i="6200,9189,10154"; a="229756736" X-IronPort-AV: E=Sophos;i="5.87,199,1631602800"; d="scan'208";a="229756736" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Nov 2021 07:52:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,199,1631602800"; d="scan'208";a="576207483" Received: from sivswdev08.ir.intel.com ([10.237.217.47]) by FMSMGA003.fm.intel.com with ESMTP; 01 Nov 2021 07:52:51 -0700 From: Konstantin Ananyev To: dev@dpdk.org Cc: stephen@networkplumber.org, Konstantin Ananyev Date: Mon, 1 Nov 2021 14:52:46 +0000 Message-Id: <20211101145246.23465-1-konstantin.ananyev@intel.com> X-Mailer: git-send-email 2.18.0 Subject: [dpdk-dev] [PATCH] bpf: fix convert API can be undefined X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" rte_bpf_convert() implementation depends on libpcap. Right now it is defined only when this library is installed and RTE_PORT_PCAP is defined. Fix that by providing for such case stub rte_bpf_convert() implementation that will always return an error. Also move stub for another function (rte_bpf_elf_load) into the same place (bpf_stub.c). Fixes: 2eccf6afbea9 ("bpf: add function to convert classic BPF to DPDK BPF") Signed-off-by: Konstantin Ananyev --- lib/bpf/bpf_load.c | 18 ------------------ lib/bpf/bpf_stub.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ lib/bpf/meson.build | 1 + lib/bpf/rte_bpf.h | 4 ---- 4 files changed, 46 insertions(+), 22 deletions(-) create mode 100644 lib/bpf/bpf_stub.c diff --git a/lib/bpf/bpf_load.c b/lib/bpf/bpf_load.c index 2a3b901d74..272f2ba11b 100644 --- a/lib/bpf/bpf_load.c +++ b/lib/bpf/bpf_load.c @@ -130,21 +130,3 @@ rte_bpf_load(const struct rte_bpf_prm *prm) return bpf; } - -#ifndef RTE_LIBRTE_BPF_ELF -struct rte_bpf * -rte_bpf_elf_load(const struct rte_bpf_prm *prm, const char *fname, - const char *sname) -{ - if (prm == NULL || fname == NULL || sname == NULL) { - rte_errno = EINVAL; - return NULL; - } - - RTE_BPF_LOG(ERR, "%s() is not supported with current config\n" - "rebuild with libelf installed\n", - __func__); - rte_errno = ENOTSUP; - return NULL; -} -#endif diff --git a/lib/bpf/bpf_stub.c b/lib/bpf/bpf_stub.c new file mode 100644 index 0000000000..caec00f42f --- /dev/null +++ b/lib/bpf/bpf_stub.c @@ -0,0 +1,45 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018-2021 Intel Corporation + */ + +#include "bpf_impl.h" +#include + +/** + * Contains stubs for unimplemented public API functions + */ + +#ifndef RTE_LIBRTE_BPF_ELF +struct rte_bpf * +rte_bpf_elf_load(const struct rte_bpf_prm *prm, const char *fname, + const char *sname) +{ + if (prm == NULL || fname == NULL || sname == NULL) { + rte_errno = EINVAL; + return NULL; + } + + RTE_BPF_LOG(ERR, "%s() is not supported with current config\n" + "rebuild with libelf installed\n", + __func__); + rte_errno = ENOTSUP; + return NULL; +} +#endif + +#ifndef RTE_PORT_PCAP +struct rte_bpf_prm * +rte_bpf_convert(const struct bpf_program *prog) +{ + if (prog == NULL) { + rte_errno = EINVAL; + return NULL; + } + + RTE_BPF_LOG(ERR, "%s() is not supported with current config\n" + "rebuild with libpcap installed\n", + __func__); + rte_errno = ENOTSUP; + return NULL; +} +#endif diff --git a/lib/bpf/meson.build b/lib/bpf/meson.build index 33b506f3ac..0ec067957b 100644 --- a/lib/bpf/meson.build +++ b/lib/bpf/meson.build @@ -12,6 +12,7 @@ sources = files('bpf.c', 'bpf_exec.c', 'bpf_load.c', 'bpf_pkt.c', + 'bpf_stub.c', 'bpf_validate.c') if arch_subdir == 'x86' and dpdk_conf.get('RTE_ARCH_64') diff --git a/lib/bpf/rte_bpf.h b/lib/bpf/rte_bpf.h index 0d0a84b130..5ec1f8abbb 100644 --- a/lib/bpf/rte_bpf.h +++ b/lib/bpf/rte_bpf.h @@ -212,8 +212,6 @@ __rte_experimental void rte_bpf_dump(FILE *f, const struct ebpf_insn *buf, uint32_t len); -#ifdef RTE_PORT_PCAP - struct bpf_program; /** @@ -235,8 +233,6 @@ __rte_experimental struct rte_bpf_prm * rte_bpf_convert(const struct bpf_program *prog); -#endif - #ifdef __cplusplus } #endif