From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8C774A0C57; Mon, 1 Nov 2021 17:29:04 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4BA8B410FE; Mon, 1 Nov 2021 17:29:00 +0100 (CET) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mails.dpdk.org (Postfix) with ESMTP id 14C5840DF6 for ; Mon, 1 Nov 2021 17:28:58 +0100 (CET) X-IronPort-AV: E=McAfee;i="6200,9189,10154"; a="229774768" X-IronPort-AV: E=Sophos;i="5.87,200,1631602800"; d="scan'208";a="229774768" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Nov 2021 09:10:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,200,1631602800"; d="scan'208";a="558760562" Received: from sivswdev08.ir.intel.com ([10.237.217.47]) by fmsmga004.fm.intel.com with ESMTP; 01 Nov 2021 09:10:30 -0700 From: Konstantin Ananyev To: dev@dpdk.org Cc: stephen@networkplumber.org, Konstantin Ananyev Date: Mon, 1 Nov 2021 16:10:13 +0000 Message-Id: <20211101161013.31966-3-konstantin.ananyev@intel.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20211101161013.31966-1-konstantin.ananyev@intel.com> References: <20211101145246.23465-1-konstantin.ananyev@intel.com> <20211101161013.31966-1-konstantin.ananyev@intel.com> Subject: [dpdk-dev] [PATCH v2 2/2] 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 | 5 +---- 4 files changed, 47 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 f09e36b65b..7e7d03b9c7 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; /** @@ -228,13 +226,12 @@ struct bpf_program; * Possible rte_errno errors include: * - EINVAL - invalid parameter passed to function * - ENOMEM - can't reserve enough memory + * - ENOTSUP - operation not supported */ __rte_experimental struct rte_bpf_prm * rte_bpf_convert(const struct bpf_program *prog); -#endif - #ifdef __cplusplus } #endif -- 2.25.1