From patchwork Wed Sep 25 16:33:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Pfaff X-Patchwork-Id: 1167548 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=ovn.org Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46dmt44kGDz9sP7 for ; Thu, 26 Sep 2019 04:34:03 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id F1F42D8E; Wed, 25 Sep 2019 18:33:59 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 58F3EC77 for ; Wed, 25 Sep 2019 18:33:58 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net [217.70.183.201]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id B5120B0 for ; Wed, 25 Sep 2019 18:33:49 +0000 (UTC) X-Originating-IP: 66.170.99.95 Received: from localhost.localdomain (unknown [66.170.99.95]) (Authenticated sender: blp@ovn.org) by relay8-d.mail.gandi.net (Postfix) with ESMTPSA id 634191BF205; Wed, 25 Sep 2019 18:33:47 +0000 (UTC) From: Ben Pfaff To: dev@openvswitch.org Date: Wed, 25 Sep 2019 09:33:57 -0700 Message-Id: <20190925163400.1171-1-blp@ovn.org> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Ben Pfaff Subject: [ovs-dev] [PATCH ovn 1/4] configure: Improve checks for OVS source and build directories. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Until now, "configure" was willing to accept anything as the OVS source and build directory, but obviously only an actual OVS source or build directory will actually work. This commit adds some basic checking. In addition, this changes relative paths so that they are relative to the current working directory when "configure" is invoked, instead of relative to the location of the "configure" script. This is less surprising. Finally, this moves the `eval echo "$dir"` lines up higher so that they do their intended job of expanding ~ in the right place. That has to happen early, otherwise, ~/foo will effectively end up as $PWD/\~/foo. Signed-off-by: Ben Pfaff Acked-by: Numan Siddique --- acinclude.m4 | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 31e4f0b5413f..9dfed9034910 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1220,32 +1220,37 @@ AC_DEFUN([OVN_CHECK_OVS], [ AC_MSG_CHECKING([for OVS source directory]) if test X"$with_ovs_source" != X; then - OVSDIR=$with_ovs_source + OVSDIR=`eval echo "$with_ovs_source"` case $OVSDIR in /*) ;; - *) OVSDIR=$ac_abs_confdir/$OVSDIR ;; + *) OVSDIR=`pwd`/$OVSDIR ;; esac + if test ! -f "$OVSDIR/vswitchd/bridge.c"; then + AC_ERROR([$OVSDIR is not an OVS source directory]) + fi else - AC_ERROR([OVS source dir path needs to be specified]) + AC_ERROR([OVS source dir path needs to be specified (use --with-ovs-source)]) fi - OVSDIR=`eval echo "$OVSDIR"` AC_MSG_RESULT([$OVSDIR]) AC_SUBST(OVSDIR) AC_MSG_CHECKING([for OVS build directory]) if test X"$with_ovs_build" != X; then - OVSBUILDDIR=$with_ovs_build + OVSBUILDDIR=`eval echo "$with_ovs_build"` case $OVSBUILDDIR in /*) ;; - *) OVSBUILDDIR=$ac_abs_confdir/$OVSBUILDDIR ;; + *) OVSBUILDDIR=`pwd`/$OVSBUILDDIR ;; esac - else + if test ! -f "$OVSBUILDDIR/config.h"; then + AC_ERROR([$OVSBUILDDIR is not a configured OVS build directory]) + fi + elif test -f "$OVSDIR/config.h"; then # If separate build dir is not specified, use src dir. OVSBUILDDIR=$OVSDIR + else + AC_ERROR([OVS source dir $OVSDIR is not configured as a build directory (either run configure there or use --with-ovs-build to point to the build directory)]) fi - - OVSBUILDDIR=`eval echo "$OVSBUILDDIR"` AC_MSG_RESULT([$OVSBUILDDIR]) AC_SUBST(OVSBUILDDIR) ]) From patchwork Wed Sep 25 16:33:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Pfaff X-Patchwork-Id: 1167552 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=ovn.org Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46dmtn230Vz9sNk for ; Thu, 26 Sep 2019 04:34:41 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id BE081D95; Wed, 25 Sep 2019 18:34:02 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 775DBD93 for ; Wed, 25 Sep 2019 18:34:01 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net [217.70.183.201]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 18BADB0 for ; Wed, 25 Sep 2019 18:33:50 +0000 (UTC) X-Originating-IP: 66.170.99.95 Received: from localhost.localdomain (unknown [66.170.99.95]) (Authenticated sender: blp@ovn.org) by relay8-d.mail.gandi.net (Postfix) with ESMTPSA id CB1801BF203; Wed, 25 Sep 2019 18:33:48 +0000 (UTC) From: Ben Pfaff To: dev@openvswitch.org Date: Wed, 25 Sep 2019 09:33:58 -0700 Message-Id: <20190925163400.1171-2-blp@ovn.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190925163400.1171-1-blp@ovn.org> References: <20190925163400.1171-1-blp@ovn.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Ben Pfaff Subject: [ovs-dev] [PATCH ovn 2/4] configure: Fix ctags identifier list. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Since compiler.h is an OVS header file, it needs to be relative to the OVS source directory (and therefore we need to look at it after we've located the OVS source directory). Signed-off-by: Ben Pfaff --- acinclude.m4 | 2 +- configure.ac | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 9dfed9034910..6c3993e83b48 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1143,7 +1143,7 @@ dnl ctags ignores symbols with extras identifiers. This builds a list of dnl specially handled identifiers to be ignored. AC_DEFUN([OVS_CTAGS_IDENTIFIERS], AC_SUBST([OVS_CTAGS_IDENTIFIERS_LIST], - [`printf %s '-I "'; sed -n 's/^#define \(OVS_[A-Z_]\+\)(\.\.\.)$/\1+/p' ${srcdir}/include/openvswitch/compiler.h | tr \\\n ' ' ; printf '"'`] )) + [`printf %s '-I "'; sed -n 's/^#define \(OVS_[A-Z_]\+\)(\.\.\.)$/\1+/p' ${OVSDIR}/include/openvswitch/compiler.h | tr \\\n ' ' ; printf '"'`] )) dnl OVS_PTHREAD_SET_NAME dnl diff --git a/configure.ac b/configure.ac index a6f708812f87..65c57c7990fb 100644 --- a/configure.ac +++ b/configure.ac @@ -171,7 +171,6 @@ OVS_CONDITIONAL_CC_OPTION([-Wno-unused], [HAVE_WNO_UNUSED]) OVS_CONDITIONAL_CC_OPTION([-Wno-unused-parameter], [HAVE_WNO_UNUSED_PARAMETER]) OVS_ENABLE_WERROR OVS_ENABLE_SPARSE -OVS_CTAGS_IDENTIFIERS AC_ARG_VAR(KARCH, [Kernel Architecture String]) AC_SUBST(KARCH) @@ -180,6 +179,7 @@ OVS_CHECK_LINUX_TC OVS_CHECK_DPDK OVS_CHECK_PRAGMA_MESSAGE OVN_CHECK_OVS +OVS_CTAGS_IDENTIFIERS AC_SUBST([OVS_CFLAGS]) AC_SUBST([OVS_LDFLAGS]) From patchwork Wed Sep 25 16:33:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Pfaff X-Patchwork-Id: 1167554 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=ovn.org Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46dmvY3TdKz9sNk for ; Thu, 26 Sep 2019 04:35:21 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 791BFD9F; Wed, 25 Sep 2019 18:34:05 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 65069D9F for ; Wed, 25 Sep 2019 18:34:04 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net [217.70.183.201]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 29E7F844 for ; Wed, 25 Sep 2019 18:33:52 +0000 (UTC) X-Originating-IP: 66.170.99.95 Received: from localhost.localdomain (unknown [66.170.99.95]) (Authenticated sender: blp@ovn.org) by relay8-d.mail.gandi.net (Postfix) with ESMTPSA id 325541BF209; Wed, 25 Sep 2019 18:33:49 +0000 (UTC) From: Ben Pfaff To: dev@openvswitch.org Date: Wed, 25 Sep 2019 09:33:59 -0700 Message-Id: <20190925163400.1171-3-blp@ovn.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190925163400.1171-1-blp@ovn.org> References: <20190925163400.1171-1-blp@ovn.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Ben Pfaff Subject: [ovs-dev] [PATCH ovn 3/4] configure: Remove checks that are unlikely to ever be of use to OVN. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org OVN should not have its own kernel module, and so on, so these checks aren't useful to it. Signed-off-by: Ben Pfaff --- Makefile.am | 7 - acinclude.m4 | 891 --------------------------------------------------- configure.ac | 10 +- m4/ovn.m4 | 46 --- 4 files changed, 1 insertion(+), 953 deletions(-) diff --git a/Makefile.am b/Makefile.am index 97dc309e3c5d..33c18c5d83c4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -52,13 +52,6 @@ AM_CFLAGS = -Wstrict-prototypes AM_CFLAGS += $(WARNING_FLAGS) AM_CFLAGS += $(OVS_CFLAGS) -if DPDK_NETDEV -AM_CFLAGS += -D_FILE_OFFSET_BITS=64 -DPDKSTRIP_FLAGS = --dpdk -else -DPDKSTRIP_FLAGS = --nodpdk -endif - if NDEBUG AM_CPPFLAGS += -DNDEBUG AM_CFLAGS += -fomit-frame-pointer diff --git a/acinclude.m4 b/acinclude.m4 index 6c3993e83b48..414deccabe2b 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -42,897 +42,6 @@ AC_DEFUN([OVS_ENABLE_WERROR], fi AC_SUBST([SPARSE_WERROR])]) -dnl OVS_CHECK_LINUX -dnl -dnl Configure linux kernel source tree -AC_DEFUN([OVS_CHECK_LINUX], [ - AC_ARG_WITH([linux], - [AC_HELP_STRING([--with-linux=/path/to/linux], - [Specify the Linux kernel build directory])]) - AC_ARG_WITH([linux-source], - [AC_HELP_STRING([--with-linux-source=/path/to/linux-source], - [Specify the Linux kernel source directory - (usually figured out automatically from build - directory)])]) - - # Deprecated equivalents to --with-linux, --with-linux-source. - AC_ARG_WITH([l26]) - AC_ARG_WITH([l26-source]) - - if test X"$with_linux" != X; then - KBUILD=$with_linux - elif test X"$with_l26" != X; then - KBUILD=$with_l26 - AC_MSG_WARN([--with-l26 is deprecated, please use --with-linux instead]) - else - KBUILD= - fi - - if test X"$KBUILD" != X; then - if test X"$with_linux_source" != X; then - KSRC=$with_linux_source - elif test X"$with_l26_source" != X; then - KSRC=$with_l26_source - AC_MSG_WARN([--with-l26-source is deprecated, please use --with-linux-source instead]) - else - KSRC= - fi - elif test X"$with_linux_source" != X || test X"$with_l26_source" != X; then - AC_MSG_ERROR([Linux source directory may not be specified without Linux build directory]) - fi - - if test -n "$KBUILD"; then - KBUILD=`eval echo "$KBUILD"` - case $KBUILD in - /*) ;; - *) KBUILD=`pwd`/$KBUILD ;; - esac - - # The build directory is what the user provided. - # Make sure that it exists. - AC_MSG_CHECKING([for Linux build directory]) - if test -d "$KBUILD"; then - AC_MSG_RESULT([$KBUILD]) - AC_SUBST(KBUILD) - else - AC_MSG_RESULT([no]) - AC_ERROR([source dir $KBUILD doesn't exist]) - fi - - # Debian breaks kernel headers into "source" header and "build" headers. - # We want the source headers, but $KBUILD gives us the "build" headers. - # Use heuristics to find the source headers. - AC_MSG_CHECKING([for Linux source directory]) - if test -n "$KSRC"; then - KSRC=`eval echo "$KSRC"` - case $KSRC in - /*) ;; - *) KSRC=`pwd`/$KSRC ;; - esac - if test ! -e $KSRC/include/linux/kernel.h; then - AC_MSG_ERROR([$KSRC is not a kernel source directory]) - fi - else - KSRC=$KBUILD - if test ! -e $KSRC/include/linux/kernel.h; then - # Debian kernel build Makefiles tend to include a line of the form: - # MAKEARGS := -C /usr/src/linux-headers-3.2.0-1-common O=/usr/src/linux-headers-3.2.0-1-486 - # First try to extract the source directory from this line. - KSRC=`sed -n 's/.*-C \([[^ ]]*\).*/\1/p' "$KBUILD"/Makefile` - if test ! -e "$KSRC"/include/linux/kernel.h; then - # Didn't work. Fall back to name-based heuristics that used to work. - case `echo "$KBUILD" | sed 's,/*$,,'` in # ( - */build) - KSRC=`echo "$KBUILD" | sed 's,/build/*$,/source,'` - ;; # ( - *) - KSRC=`(cd $KBUILD && pwd -P) | sed 's,-[[^-]]*$,-common,'` - ;; - esac - fi - fi - if test ! -e "$KSRC"/include/linux/kernel.h; then - AC_MSG_ERROR([cannot find source directory (please use --with-linux-source)]) - fi - fi - AC_MSG_RESULT([$KSRC]) - - AC_MSG_CHECKING([for kernel version]) - version=`sed -n 's/^VERSION = //p' "$KSRC/Makefile"` - patchlevel=`sed -n 's/^PATCHLEVEL = //p' "$KSRC/Makefile"` - sublevel=`sed -n 's/^SUBLEVEL = //p' "$KSRC/Makefile"` - if test X"$version" = X || test X"$patchlevel" = X; then - AC_ERROR([cannot determine kernel version]) - elif test X"$sublevel" = X; then - kversion=$version.$patchlevel - else - kversion=$version.$patchlevel.$sublevel - fi - AC_MSG_RESULT([$kversion]) - - if test "$version" -ge 4; then - if test "$version" = 4 && test "$patchlevel" -le 18; then - : # Linux 4.x - else - AC_ERROR([Linux kernel in $KBUILD is version $kversion, but version newer than 4.18.x is not supported (please refer to the FAQ for advice)]) - fi - elif test "$version" = 3 && test "$patchlevel" -ge 10; then - : # Linux 3.x - else - AC_ERROR([Linux kernel in $KBUILD is version $kversion, but version 3.10 or later is required]) - fi - if (test ! -e "$KBUILD"/include/linux/version.h && \ - test ! -e "$KBUILD"/include/generated/uapi/linux/version.h)|| \ - (test ! -e "$KBUILD"/include/linux/autoconf.h && \ - test ! -e "$KBUILD"/include/generated/autoconf.h); then - AC_MSG_ERROR([Linux kernel source in $KBUILD is not configured]) - fi - OVS_CHECK_LINUX_COMPAT - fi - AM_CONDITIONAL(LINUX_ENABLED, test -n "$KBUILD") -]) - -dnl OVS_CHECK_LINUX_TC -dnl -dnl Configure Linux tc compat. -AC_DEFUN([OVS_CHECK_LINUX_TC], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([#include ], [ - int x = TCA_FLOWER_KEY_ENC_IP_TTL_MASK; - ])], - [AC_DEFINE([HAVE_TCA_FLOWER_KEY_ENC_IP_TTL_MASK], [1], - [Define to 1 if TCA_FLOWER_KEY_ENC_IP_TTL_MASK is available.])]) - - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([#include ], [ - int x = TCA_VLAN_PUSH_VLAN_PRIORITY; - ])], - [AC_DEFINE([HAVE_TCA_VLAN_PUSH_VLAN_PRIORITY], [1], - [Define to 1 if TCA_VLAN_PUSH_VLAN_PRIORITY is available.])]) - - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([#include ], [ - int x = TCA_TUNNEL_KEY_ENC_TTL; - ])], - [AC_DEFINE([HAVE_TCA_TUNNEL_KEY_ENC_TTL], [1], - [Define to 1 if TCA_TUNNEL_KEY_ENC_TTL is available.])]) - - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([#include ], [ - int x = TCA_PEDIT_KEY_EX_HDR_TYPE_UDP; - ])], - [AC_DEFINE([HAVE_TCA_PEDIT_KEY_EX_HDR_TYPE_UDP], [1], - [Define to 1 if TCA_PEDIT_KEY_EX_HDR_TYPE_UDP is available.])]) - - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([#include ], [ - int x = TCA_SKBEDIT_FLAGS; - ])], - [AC_DEFINE([HAVE_TCA_SKBEDIT_FLAGS], [1], - [Define to 1 if TCA_SKBEDIT_FLAGS is available.])]) -]) - -dnl OVS_FIND_DEPENDENCY(FUNCTION, SEARCH_LIBS, NAME_TO_PRINT) -dnl -dnl Check for a function in a library list. -AC_DEFUN([OVS_FIND_DEPENDENCY], [ - AC_SEARCH_LIBS([$1], [$2], [], [ - AC_MSG_ERROR([unable to find $3, install the dependency package]) - ]) -]) - -dnl OVS_CHECK_DPDK -dnl -dnl Configure DPDK source tree -AC_DEFUN([OVS_CHECK_DPDK], [ - AC_ARG_WITH([dpdk], - [AC_HELP_STRING([--with-dpdk=/path/to/dpdk], - [Specify the DPDK build directory])], - [have_dpdk=true]) - - AC_MSG_CHECKING([whether dpdk datapath is enabled]) - if test "$have_dpdk" != true || test "$with_dpdk" = no; then - AC_MSG_RESULT([no]) - DPDKLIB_FOUND=false - else - AC_MSG_RESULT([yes]) - case "$with_dpdk" in - yes) - DPDK_AUTO_DISCOVER="true" - PKG_CHECK_MODULES_STATIC([DPDK], [libdpdk], [ - DPDK_INCLUDE="$DPDK_CFLAGS" - DPDK_LIB="$DPDK_LIBS"], [ - DPDK_INCLUDE="-I/usr/local/include/dpdk -I/usr/include/dpdk" - DPDK_LIB="-ldpdk"]) - ;; - *) - DPDK_AUTO_DISCOVER="false" - DPDK_INCLUDE_PATH="$with_dpdk/include" - # If 'with_dpdk' is passed install directory, point to headers - # installed in $DESTDIR/$prefix/include/dpdk - if test -e "$DPDK_INCLUDE_PATH/rte_config.h"; then - DPDK_INCLUDE="-I$DPDK_INCLUDE_PATH" - elif test -e "$DPDK_INCLUDE_PATH/dpdk/rte_config.h"; then - DPDK_INCLUDE="-I$DPDK_INCLUDE_PATH/dpdk" - fi - DPDK_LIB_DIR="$with_dpdk/lib" - DPDK_LIB="-ldpdk" - ;; - esac - - ovs_save_CFLAGS="$CFLAGS" - ovs_save_LDFLAGS="$LDFLAGS" - CFLAGS="$CFLAGS $DPDK_INCLUDE" - if test "$DPDK_AUTO_DISCOVER" = "false"; then - LDFLAGS="$LDFLAGS -L${DPDK_LIB_DIR}" - fi - - AC_CHECK_HEADERS([rte_config.h], [], [ - AC_MSG_ERROR([unable to find rte_config.h in $with_dpdk]) - ], [AC_INCLUDES_DEFAULT]) - - AC_CHECK_DECLS([RTE_LIBRTE_VHOST_NUMA, RTE_EAL_NUMA_AWARE_HUGEPAGES], [ - OVS_FIND_DEPENDENCY([get_mempolicy], [numa], [libnuma]) - ], [], [[#include ]]) - - AC_CHECK_DECL([RTE_LIBRTE_VHOST_NUMA], [ - AC_DEFINE([VHOST_NUMA], [1], [NUMA Aware vHost support detected in DPDK.]) - ], [], [[#include ]]) - - AC_CHECK_DECL([RTE_LIBRTE_PMD_PCAP], [ - OVS_FIND_DEPENDENCY([pcap_dump], [pcap], [libpcap]) - AC_CHECK_DECL([RTE_LIBRTE_PDUMP], [ - AC_DEFINE([DPDK_PDUMP], [1], [DPDK pdump enabled in OVS.]) - ], [], [[#include ]]) - ], [], [[#include ]]) - - AC_CHECK_DECL([RTE_LIBRTE_MLX5_PMD], [dnl found - OVS_FIND_DEPENDENCY([mnl_attr_put], [mnl], [libmnl]) - AC_CHECK_DECL([RTE_LIBRTE_MLX5_DLOPEN_DEPS], [], [dnl not found - OVS_FIND_DEPENDENCY([mlx5dv_create_wq], [mlx5], [libmlx5]) - OVS_FIND_DEPENDENCY([verbs_init_cq], [ibverbs], [libibverbs]) - ], [[#include ]]) - ], [], [[#include ]]) - - AC_CHECK_DECL([RTE_LIBRTE_MLX4_PMD], [dnl found - AC_CHECK_DECL([RTE_LIBRTE_MLX4_DLOPEN_DEPS], [], [dnl not found - OVS_FIND_DEPENDENCY([mlx4dv_init_obj], [mlx4], [libmlx4]) - OVS_FIND_DEPENDENCY([verbs_init_cq], [ibverbs], [libibverbs]) - ], [[#include ]]) - ], [], [[#include ]]) - - # DPDK uses dlopen to load plugins. - OVS_FIND_DEPENDENCY([dlopen], [dl], [libdl]) - - AC_MSG_CHECKING([whether linking with dpdk works]) - LIBS="$DPDK_LIB $LIBS" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([#include - #include ], - [int rte_argc; char ** rte_argv; - rte_eal_init(rte_argc, rte_argv);])], - [AC_MSG_RESULT([yes]) - DPDKLIB_FOUND=true], - [AC_MSG_RESULT([no]) - if test "$DPDK_AUTO_DISCOVER" = "true"; then - AC_MSG_ERROR(m4_normalize([ - Could not find DPDK library in default search path, Use --with-dpdk - to specify the DPDK library installed in non-standard location])) - else - AC_MSG_ERROR([Could not find DPDK libraries in $DPDK_LIB_DIR]) - fi - ]) - - CFLAGS="$ovs_save_CFLAGS" - LDFLAGS="$ovs_save_LDFLAGS" - if test "$DPDK_AUTO_DISCOVER" = "false"; then - OVS_LDFLAGS="$OVS_LDFLAGS -L$DPDK_LIB_DIR" - fi - OVS_CFLAGS="$OVS_CFLAGS $DPDK_INCLUDE" - OVS_ENABLE_OPTION([-mssse3]) - - # DPDK pmd drivers are not linked unless --whole-archive is used. - # - # This happens because the rest of the DPDK code doesn't use any symbol in - # the pmd driver objects, and the drivers register themselves using an - # __attribute__((constructor)) function. - # - # These options are specified inside a single -Wl directive to prevent - # autotools from reordering them. - # - # OTOH newer versions of dpdk pkg-config (generated with Meson) - # will already have flagged just the right set of libs with - # --whole-archive - in those cases do not wrap it once more. - case "$DPDK_LIB" in - *whole-archive*) DPDK_vswitchd_LDFLAGS=$DPDK_LIB;; - *) DPDK_vswitchd_LDFLAGS=-Wl,--whole-archive,$DPDK_LIB,--no-whole-archive - esac - AC_SUBST([DPDK_vswitchd_LDFLAGS]) - AC_DEFINE([DPDK_NETDEV], [1], [System uses the DPDK module.]) - fi - - AM_CONDITIONAL([DPDK_NETDEV], test "$DPDKLIB_FOUND" = true) -]) - -dnl OVS_GREP_IFELSE(FILE, REGEX, [IF-MATCH], [IF-NO-MATCH]) -dnl -dnl Greps FILE for REGEX. If it matches, runs IF-MATCH, otherwise IF-NO-MATCH. -dnl If IF-MATCH is empty then it defines to OVS_DEFINE(HAVE_), with -dnl translated to uppercase. -AC_DEFUN([OVS_GREP_IFELSE], [ - AC_MSG_CHECKING([whether $2 matches in $1]) - if test -f $1; then - grep '$2' $1 >/dev/null 2>&1 - status=$? - case $status in - 0) - AC_MSG_RESULT([yes]) - m4_if([$3], [], [OVS_DEFINE([HAVE_]m4_toupper([$2]))], [$3]) - ;; - 1) - AC_MSG_RESULT([no]) - $4 - ;; - *) - AC_MSG_ERROR([grep exited with status $status]) - ;; - esac - else - AC_MSG_RESULT([file not found]) - $4 - fi -]) - -dnl OVS_FIND_FIELD_IFELSE(FILE, STRUCTURE, REGEX, [IF-MATCH], [IF-NO-MATCH]) -dnl -dnl Looks for STRUCTURE in FILE. If it is found, greps for REGEX within the -dnl structure definition. If this is successful, runs IF-MATCH, otherwise -dnl IF_NO_MATCH. If IF-MATCH is empty then it defines to -dnl OVS_DEFINE(HAVE__WITH_), with and -dnl translated to uppercase. -AC_DEFUN([OVS_FIND_FIELD_IFELSE], [ - AC_MSG_CHECKING([whether $2 has member $3 in $1]) - if test -f $1; then - awk '/$2.{/,/^}/' $1 2>/dev/null | grep '$3' >/dev/null - status=$? - case $status in - 0) - AC_MSG_RESULT([yes]) - m4_if([$4], [], [OVS_DEFINE([HAVE_]m4_toupper([$2])[_WITH_]m4_toupper([$3]))], [$4]) - ;; - 1) - AC_MSG_RESULT([no]) - $5 - ;; - *) - AC_MSG_ERROR([grep exited with status $status]) - ;; - esac - else - AC_MSG_RESULT([file not found]) - $5 - fi -]) - -dnl OVS_FIND_PARAM_IFELSE(FILE, FUNCTION, REGEX, [IF-MATCH], [IF-NO-MATCH]) -dnl -dnl Looks for FUNCTION in FILE. If it is found, greps for REGEX within -dnl the function signature starting from the line matching FUNCTION -dnl and ending with the line containing the closing parenthesis. If -dnl this is successful, runs IF-MATCH, otherwise IF_NO_MATCH. If -dnl IF-MATCH is empty then it defines to -dnl OVS_DEFINE(HAVE__WITH_), with and -dnl translated to uppercase. -AC_DEFUN([OVS_FIND_PARAM_IFELSE], [ - AC_MSG_CHECKING([whether $2 has parameter $3 in $1]) - if test -f $1; then - awk '/$2[[ \t\n]]*\(/,/\)/' $1 2>/dev/null | grep '$3' >/dev/null - status=$? - case $status in - 0) - AC_MSG_RESULT([yes]) - m4_if([$4], [], [OVS_DEFINE([HAVE_]m4_toupper([$2])[_WITH_]m4_toupper([$3]))], [$4]) - ;; - 1) - AC_MSG_RESULT([no]) - $5 - ;; - *) - AC_MSG_ERROR([grep exited with status $status]) - ;; - esac - else - AC_MSG_RESULT([file not found]) - $5 - fi -]) - -dnl OVS_DEFINE(NAME) -dnl -dnl Defines NAME to 1 in kcompat.h. -AC_DEFUN([OVS_DEFINE], [ - echo '#define $1 1' >> datapath/linux/kcompat.h.new -]) - -dnl OVS_CHECK_LINUX_COMPAT -dnl -dnl Runs various Autoconf checks on the Linux kernel source in -dnl the directory in $KBUILD. -AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [ - rm -f datapath/linux/kcompat.h.new - mkdir -p datapath/linux - : > datapath/linux/kcompat.h.new - - echo '#include -#ifndef RHEL_RELEASE_CODE -#define RHEL_RELEASE_CODE 0 -#define RHEL_RELEASE_VERSION(a, b) 0 -#endif' >> datapath/linux/kcompat.h.new - - OVS_GREP_IFELSE([$KSRC/arch/x86/include/asm/checksum_32.h], [src_err,], - [OVS_DEFINE([HAVE_CSUM_COPY_DBG])]) - - OVS_GREP_IFELSE([$KSRC/include/net/ip6_fib.h], [rt6_get_cookie], - [OVS_DEFINE([HAVE_RT6_GET_COOKIE])]) - - OVS_GREP_IFELSE([$KSRC/include/net/addrconf.h], [ipv6_dst_lookup.*net], - [OVS_DEFINE([HAVE_IPV6_DST_LOOKUP_NET])]) - OVS_GREP_IFELSE([$KSRC/include/net/addrconf.h], [ipv6_stub]) - - OVS_GREP_IFELSE([$KSRC/include/linux/err.h], [ERR_CAST]) - OVS_GREP_IFELSE([$KSRC/include/linux/err.h], [IS_ERR_OR_NULL]) - OVS_GREP_IFELSE([$KSRC/include/linux/err.h], [PTR_ERR_OR_ZERO]) - - OVS_GREP_IFELSE([$KSRC/include/linux/jump_label.h], [static_branch_unlikely(], - [OVS_DEFINE([HAVE_UPSTREAM_STATIC_KEY])]) - OVS_GREP_IFELSE([$KSRC/include/linux/jump_label.h], [DEFINE_STATIC_KEY_FALSE], - [OVS_DEFINE([HAVE_DEFINE_STATIC_KEY])]) - - OVS_GREP_IFELSE([$KSRC/include/linux/etherdevice.h], [eth_hw_addr_random]) - OVS_GREP_IFELSE([$KSRC/include/linux/etherdevice.h], [ether_addr_copy]) - - OVS_GREP_IFELSE([$KSRC/include/uapi/linux/if_link.h], [IFLA_GENEVE_TOS]) - OVS_GREP_IFELSE([$KSRC/include/uapi/linux/if_link.h], [rtnl_link_stats64]) - OVS_GREP_IFELSE([$KSRC/include/linux/if_link.h], [rtnl_link_stats64]) - OVS_GREP_IFELSE([$KSRC/include/linux/if_vlan.h], [vlan_set_encap_proto]) - OVS_GREP_IFELSE([$KSRC/include/linux/if_vlan.h], [vlan_hwaccel_push_inside]) - - OVS_GREP_IFELSE([$KSRC/include/linux/in.h], [ipv4_is_multicast]) - OVS_GREP_IFELSE([$KSRC/include/linux/in.h], [proto_ports_offset]) - OVS_GREP_IFELSE([$KSRC/include/net/ip.h], [__ip_select_ident.*dst_entry], - [OVS_DEFINE([HAVE_IP_SELECT_IDENT_USING_DST_ENTRY])]) - OVS_GREP_IFELSE([$KSRC/include/net/ip.h], [__ip_select_ident.*net], - [OVS_DEFINE([HAVE_IP_SELECT_IDENT_USING_NET])]) - - OVS_GREP_IFELSE([$KSRC/include/net/ip.h], [inet_get_local_port_range.*net], - [OVS_DEFINE([HAVE_INET_GET_LOCAL_PORT_RANGE_USING_NET])]) - OVS_GREP_IFELSE([$KSRC/include/net/ip.h], [ip_defrag.*net], - [OVS_DEFINE([HAVE_IP_DEFRAG_TAKES_NET])]) - OVS_FIND_PARAM_IFELSE([$KSRC/include/net/ip.h], - [ip_do_fragment], [net], - [OVS_DEFINE([HAVE_IP_DO_FRAGMENT_TAKES_NET])]) - OVS_FIND_PARAM_IFELSE([$KSRC/include/net/ip.h], - [ip_local_out], [net], - [OVS_DEFINE([HAVE_IP_LOCAL_OUT_TAKES_NET])]) - - OVS_GREP_IFELSE([$KSRC/include/net/ip.h], [ip_skb_dst_mtu]) - - OVS_GREP_IFELSE([$KSRC/include/net/ip.h], [IPSKB_FRAG_PMTU], - [OVS_DEFINE([HAVE_CORRECT_MRU_HANDLING])]) - OVS_GREP_IFELSE([$KSRC/include/net/ip_tunnels.h], [__ip_tunnel_change_mtu]) - OVS_GREP_IFELSE([$KSRC/include/net/inet_frag.h], [hashfn.*const], - [OVS_DEFINE([HAVE_INET_FRAGS_CONST])]) - OVS_GREP_IFELSE([$KSRC/include/net/inet_frag.h], [last_in], - [OVS_DEFINE([HAVE_INET_FRAGS_LAST_IN])]) - OVS_GREP_IFELSE([$KSRC/include/net/inet_frag.h], [inet_frag_evicting]) - OVS_GREP_IFELSE([$KSRC/include/net/inet_frag.h], [inet_frag_evictor]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/net/inet_frag.h], [inet_frags], - [frags_work]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/net/inet_frag.h], [inet_frags], - [rwlock]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/net/inet_frag.h], [inet_frag_queue], - [list_evictor]) - OVS_GREP_IFELSE([$KSRC/include/net/inet_frag.h], [inet_frag_lru_move]) - OVS_FIND_PARAM_IFELSE([$KSRC/include/net/inet_frag.h], - [sub_frag_mem_limit], [struct.netns_frags], - [OVS_DEFINE([HAVE_SUB_FRAG_MEM_LIMIT_ARG_STRUCT_NETNS_FRAGS])]) - OVS_GREP_IFELSE([$KSRC/include/net/inet_frag.h], [void.*inet_frags_init], - [OVS_DEFINE([HAVE_VOID_INET_FRAGS_INIT])]) - OVS_GREP_IFELSE([$KSRC/include/net/inetpeer.h], [vif], - [OVS_DEFINE([HAVE_INETPEER_VIF_SUPPORT])]) - - dnl Check for dst_cache and ipv6 lable to use backported tunnel infrastructure. - dnl OVS does not really need ipv6 label field, but its presence signifies that - dnl the stack has all required ipv6 support. - dnl OVS also does not need dst_cache But this dependency allows us to write - dnl much cleaner code. - - OVS_FIND_FIELD_IFELSE([$KSRC/include/net/ip_tunnels.h], [ip_tunnel_key], - [label], - [OVS_GREP_IFELSE([$KSRC/include/net/ip_tunnels.h], - [iptunnel_pull_offloads], - [OVS_GREP_IFELSE([$KSRC/include/net/dst_cache.h], [dst_cache], - [OVS_GREP_IFELSE([$KSRC/include/net/erspan.h], [erspan_md2], - [OVS_DEFINE([USE_UPSTREAM_TUNNEL])])])])]) - - OVS_GREP_IFELSE([$KSRC/include/net/dst_cache.h], [dst_cache], - [OVS_DEFINE([USE_BUILTIN_DST_CACHE])]) - OVS_GREP_IFELSE([$KSRC/include/net/mpls.h], [mpls_hdr], - [OVS_DEFINE([MPLS_HEADER_IS_L3])]) - OVS_GREP_IFELSE([$KSRC/include/linux/net.h], [sock_create_kern.*net], - [OVS_DEFINE([HAVE_SOCK_CREATE_KERN_NET])]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [ndo_fill_metadata_dst]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [dev_disable_lro]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [dev_get_stats]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [dev_get_by_index_rcu]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [dev_recursion_level]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [__skb_gso_segment]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [skb_gso_error_unwind]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [can_checksum_protocol]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [ndo_get_iflink]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [ndo_features_check], - [OVS_DEFINE([USE_UPSTREAM_TUNNEL_GSO])]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [ndo_add_vxlan_port]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [ndo_add_geneve_port]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [ndo_udp_tunnel_add]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [netdev_features_t]) - dnl Ubuntu kernel 3.13 has defined this struct but not used for netdev->tstats. - dnl So check type of tstats. - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [pcpu_sw_netstats.*tstats], - [OVS_DEFINE([HAVE_PCPU_SW_NETSTATS])]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [netif_needs_gso.*net_device], - [OVS_DEFINE([HAVE_NETIF_NEEDS_GSO_NETDEV])]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [skb_csum_hwoffload_help]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [udp_offload]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [udp_offload.*uoff], - [OVS_DEFINE([HAVE_UDP_OFFLOAD_ARG_UOFF])]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [gro_remcsum]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [IFF_PHONY_HEADROOM]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/linux/netdevice.h], [net_device_ops], - [extended]) - OVS_FIND_PARAM_IFELSE([$KSRC/include/linux/netdevice.h], - [netdev_master_upper_dev_link], [upper_priv], - [OVS_DEFINE([HAVE_NETDEV_MASTER_UPPER_DEV_LINK_PRIV])]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], - [netdev_master_upper_dev_link_rh], - [OVS_DEFINE([HAVE_NETDEV_MASTER_UPPER_DEV_LINK_RH])]) - - OVS_FIND_FIELD_IFELSE([$KSRC/include/linux/netdevice.h], [net_device], - [max_mtu]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/linux/netdevice.h], [net_device_ops_extended], - [ndo_change_mtu], [OVS_DEFINE([HAVE_RHEL7_MAX_MTU])]) - - OVS_GREP_IFELSE([$KSRC/include/linux/netfilter.h], [nf_hook_state]) - OVS_GREP_IFELSE([$KSRC/include/linux/netfilter.h], [nf_register_net_hook]) - OVS_GREP_IFELSE([$KSRC/include/linux/netfilter.h], [nf_hookfn.*nf_hook_ops], - [OVS_DEFINE([HAVE_NF_HOOKFN_ARG_OPS])]) - OVS_FIND_PARAM_IFELSE([$KSRC/include/linux/netfilter.h], [nf_hookfn], [priv], - [OVS_DEFINE([HAVE_NF_HOOKFN_ARG_PRIV])]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/linux/netfilter.h], [nf_hook_ops], - [owner], [OVS_DEFINE([HAVE_NF_HOOKS_OPS_OWNER])]) - OVS_GREP_IFELSE([$KSRC/include/linux/netfilter.h], [NFPROTO_INET]) - - - OVS_FIND_FIELD_IFELSE([$KSRC/include/linux/netfilter_ipv6.h], [nf_ipv6_ops], - [fragment.*sock], [OVS_DEFINE([HAVE_NF_IPV6_OPS_FRAGMENT])]) - - OVS_FIND_FIELD_IFELSE([$KSRC/include/net/netfilter/nf_conntrack.h], - [nf_conn], [struct timer_list[[ \t]]*timeout], - [OVS_DEFINE([HAVE_NF_CONN_TIMER])]) - OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_conntrack.h], - [nf_ct_delete(], [OVS_DEFINE([HAVE_NF_CT_DELETE])]) - - OVS_FIND_PARAM_IFELSE([$KSRC/include/net/netfilter/nf_conntrack.h], - [nf_ct_tmpl_alloc], [nf_conntrack_zone], - [OVS_DEFINE([HAVE_NF_CT_TMPL_ALLOC_TAKES_STRUCT_ZONE])]) - OVS_FIND_PARAM_IFELSE([$KSRC/include/net/netfilter/nf_conntrack.h], - [nf_ct_get_tuplepr], [struct.net], - [OVS_DEFINE([HAVE_NF_CT_GET_TUPLEPR_TAKES_STRUCT_NET])]) - OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_conntrack.h], - [nf_ct_set]) - OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_conntrack.h], - [nf_ct_is_untracked]) - OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_conntrack_zones.h], - [nf_ct_zone_init]) - OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_conntrack_l3proto.h], - [net_ns_get]) - OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_conntrack_labels.h], - [nf_connlabels_get]) - OVS_FIND_PARAM_IFELSE([$KSRC/include/net/netfilter/nf_conntrack_labels.h], - [nf_connlabels_get], [int bit], - [OVS_DEFINE([HAVE_NF_CONNLABELS_GET_TAKES_BIT])]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/net/netfilter/nf_conntrack_labels.h], - [nf_conn_labels], [words]) - OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_nat.h], [nf_ct_nat_ext_add]) - OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_nat.h], [nf_nat_alloc_null_binding]) - OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_nat.h], [nf_nat_range2]) - OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_conntrack_seqadj.h], [nf_ct_seq_adjust]) - OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_conntrack_count.h], [nf_conncount_gc_list], - [OVS_DEFINE([HAVE_UPSTREAM_NF_CONNCOUNT])]) - - OVS_GREP_IFELSE([$KSRC/include/linux/random.h], [prandom_u32]) - OVS_GREP_IFELSE([$KSRC/include/linux/random.h], [prandom_u32_max]) - - OVS_GREP_IFELSE([$KSRC/include/net/rtnetlink.h], [get_link_net]) - OVS_GREP_IFELSE([$KSRC/include/net/rtnetlink.h], [name_assign_type]) - OVS_GREP_IFELSE([$KSRC/include/net/rtnetlink.h], [rtnl_create_link.*src_net], - [OVS_DEFINE([HAVE_RTNL_CREATE_LINK_SRC_NET])]) - OVS_GREP_IFELSE([$KSRC/include/net/net_namespace.h], [possible_net_t]) - - OVS_GREP_IFELSE([$KSRC/include/linux/rcupdate.h], [rcu_read_lock_held], [], - [OVS_GREP_IFELSE([$KSRC/include/linux/rtnetlink.h], - [rcu_read_lock_held])]) - OVS_GREP_IFELSE([$KSRC/include/linux/rtnetlink.h], [lockdep_rtnl_is_held]) - OVS_GREP_IFELSE([$KSRC/include/linux/rtnetlink.h], [net_rwsem]) - - # Check for the proto_data_valid member in struct sk_buff. The [^@] - # is necessary because some versions of this header remove the - # member but retain the kerneldoc comment that describes it (which - # starts with @). The brackets must be doubled because of m4 - # quoting rules. - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [[[^@]]proto_data_valid], - [OVS_DEFINE([HAVE_PROTO_DATA_VALID])]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_checksum_start_offset]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [inner_protocol]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [inner_protocol_type]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_inner_transport_offset]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [kfree_skb_list]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [rxhash]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [u16.*rxhash], - [OVS_DEFINE([HAVE_U16_RXHASH])]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_dst(], - [OVS_DEFINE([HAVE_SKB_DST_ACCESSOR_FUNCS])]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], - [skb_copy_from_linear_data_offset]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], - [skb_reset_tail_pointer]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_cow_head]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_warn_if_lro], - [OVS_DEFINE([HAVE_SKB_WARN_LRO])]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [consume_skb]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_frag_page]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_has_frag_list]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [__skb_fill_page_desc]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_reset_mac_len]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_unclone]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_orphan_frags]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_get_hash(], - [OVS_DEFINE([HAVE_SKB_GET_HASH])]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_clear_hash]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [int.skb_zerocopy(], - [OVS_DEFINE([HAVE_SKB_ZEROCOPY])]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [u8.*l4_rxhash], - [OVS_DEFINE([HAVE_L4_RXHASH])]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_ensure_writable]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_vlan_pop]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [__skb_vlan_pop]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_vlan_push]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_clear_hash_if_not_l4]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_postpush_rcsum]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [lco_csum]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_nfct]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_put_zero]) - - OVS_GREP_IFELSE([$KSRC/include/linux/types.h], [bool], - [OVS_DEFINE([HAVE_BOOL_TYPE])]) - OVS_GREP_IFELSE([$KSRC/include/linux/types.h], [__wsum], - [OVS_DEFINE([HAVE_CSUM_TYPES])]) - OVS_GREP_IFELSE([$KSRC/include/uapi/linux/types.h], [__wsum], - [OVS_DEFINE([HAVE_CSUM_TYPES])]) - - OVS_GREP_IFELSE([$KSRC/include/net/checksum.h], [csum_replace4]) - OVS_GREP_IFELSE([$KSRC/include/net/checksum.h], [csum_unfold]) - - OVS_GREP_IFELSE([$KSRC/include/net/dst.h], [dst_discard_sk]) - OVS_GREP_IFELSE([$KSRC/include/net/dst.h], [__skb_dst_copy]) - - OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [genl_has_listeners]) - OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [mcgrp_offset]) - OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [parallel_ops]) - OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [netlink_has_listeners(net->genl_sock], - [OVS_DEFINE([HAVE_GENL_HAS_LISTENERS_TAKES_NET])]) - OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [genlmsg_parse]) - OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [genl_notify.*family], - [OVS_DEFINE([HAVE_GENL_NOTIFY_TAKES_FAMILY])]) - OVS_FIND_PARAM_IFELSE([$KSRC/include/net/genetlink.h], - [genl_notify], [net], - [OVS_DEFINE([HAVE_GENL_NOTIFY_TAKES_NET])]) - - - OVS_FIND_FIELD_IFELSE([$KSRC/include/net/genetlink.h], - [genl_multicast_group], [id]) - OVS_GREP_IFELSE([$KSRC/include/net/geneve.h], [geneve_hdr]) - - OVS_GREP_IFELSE([$KSRC/include/net/gre.h], [gre_cisco_register]) - OVS_GREP_IFELSE([$KSRC/include/net/gre.h], [gre_handle_offloads]) - OVS_GREP_IFELSE([$KSRC/include/net/ipv6.h], [IP6_FH_F_SKIP_RH]) - OVS_GREP_IFELSE([$KSRC/include/net/ipv6.h], [ip6_local_out_sk]) - OVS_GREP_IFELSE([$KSRC/include/net/ipv6.h], [__ipv6_addr_jhash]) - OVS_GREP_IFELSE([$KSRC/include/net/ip6_fib.h], [rt6i.*u.dst], - [OVS_DEFINE([HAVE_RT6INFO_DST_UNION])]) - OVS_GREP_IFELSE([$KSRC/include/net/ip6_route.h], [ip6_frag.*sock], - [OVS_DEFINE([HAVE_IP_FRAGMENT_TAKES_SOCK])]) - - OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_put_64bit]) - OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_get_be16]) - OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_put_be16]) - OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_put_be32]) - OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_put_be64]) - OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_put_in_addr]) - OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_find_nested]) - OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_is_last]) - OVS_GREP_IFELSE([$KSRC/include/linux/netlink.h], [void.*netlink_set_err], - [OVS_DEFINE([HAVE_VOID_NETLINK_SET_ERR])]) - OVS_FIND_PARAM_IFELSE([$KSRC/include/net/netlink.h], - [nla_parse], [netlink_ext_ack], - [OVS_DEFINE([HAVE_NETLINK_EXT_ACK])]) - - OVS_GREP_IFELSE([$KSRC/include/net/sctp/checksum.h], [sctp_compute_cksum]) - - OVS_GREP_IFELSE([$KSRC/include/linux/if_vlan.h], [ADD_ALL_VLANS_CMD], - [OVS_DEFINE([HAVE_VLAN_BUG_WORKAROUND])]) - OVS_GREP_IFELSE([$KSRC/include/linux/if_vlan.h], [vlan_insert_tag_set_proto]) - OVS_GREP_IFELSE([$KSRC/include/linux/if_vlan.h], [__vlan_insert_tag]) - OVS_GREP_IFELSE([$KSRC/include/linux/if_vlan.h], [vlan_get_protocol]) - OVS_GREP_IFELSE([$KSRC/include/linux/if_vlan.h], [skb_vlan_tagged]) - OVS_GREP_IFELSE([$KSRC/include/linux/if_vlan.h], [eth_type_vlan]) - - OVS_FIND_PARAM_IFELSE([$KSRC/include/net/dst_metadata.h], - [metadata_dst_alloc], [metadata_type]) - - OVS_GREP_IFELSE([$KSRC/include/linux/u64_stats_sync.h], [u64_stats_fetch_begin_irq]) - - OVS_GREP_IFELSE([$KSRC/include/net/vxlan.h], [struct vxlan_metadata], - [OVS_DEFINE([HAVE_VXLAN_METADATA])]) - OVS_GREP_IFELSE([$KSRC/include/net/udp.h], [udp_flow_src_port], - [OVS_GREP_IFELSE([$KSRC/include/net/udp.h], [inet_get_local_port_range(net], - [OVS_DEFINE([HAVE_UDP_FLOW_SRC_PORT])])]) - OVS_GREP_IFELSE([$KSRC/include/net/udp.h], [udp_v4_check]) - OVS_GREP_IFELSE([$KSRC/include/net/udp_tunnel.h], [udp_tunnel_gro_complete]) - OVS_GREP_IFELSE([$KSRC/include/net/udp_tunnel.h], [sk_buff.*udp_tunnel_handle_offloads], - [OVS_DEFINE([HAVE_UDP_TUNNEL_HANDLE_OFFLOAD_RET_SKB])]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/net/udp_tunnel.h], [udp_tunnel_sock_cfg], - [gro_receive]) - - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [ignore_df], - [OVS_DEFINE([HAVE_IGNORE_DF_RENAME])]) - OVS_GREP_IFELSE([$KSRC/include/uapi/linux/netdevice.h], [NET_NAME_UNKNOWN], - [OVS_DEFINE([HAVE_NET_NAME_UNKNOWN])]) - - OVS_GREP_IFELSE([$KSRC/include/net/sock.h], [sk_no_check_tx]) - OVS_GREP_IFELSE([$KSRC/include/linux/udp.h], [no_check6_tx]) - OVS_GREP_IFELSE([$KSRC/include/linux/utsrelease.h], [el6], - [OVS_DEFINE([HAVE_RHEL6_PER_CPU])]) - OVS_FIND_PARAM_IFELSE([$KSRC/include/net/protocol.h], - [udp_add_offload], [net], - [OVS_DEFINE([HAVE_UDP_ADD_OFFLOAD_TAKES_NET])]) - OVS_FIND_PARAM_IFELSE([$KSRC/include/net/netfilter/ipv6/nf_defrag_ipv6.h], - [nf_defrag_ipv6_enable], [net], - [OVS_DEFINE([HAVE_DEFRAG_ENABLE_TAKES_NET])]) - OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [family_list], - [OVS_DEFINE([HAVE_GENL_FAMILY_LIST])]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/linux/netdevice.h], [net_device], - [needs_free_netdev], - [OVS_DEFINE([HAVE_NEEDS_FREE_NETDEV])]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/net/vxlan.h], [vxlan_dev], [cfg], - [OVS_DEFINE([HAVE_VXLAN_DEV_CFG])]) - OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_conntrack_helper.h], - [nf_conntrack_helper_put], - [OVS_DEFINE(HAVE_NF_CONNTRACK_HELPER_PUT)]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h],[[[[:space:]]]SKB_GSO_UDP[[[:space:]]]], - [OVS_DEFINE([HAVE_SKB_GSO_UDP])]) - OVS_GREP_IFELSE([$KSRC/include/net/dst.h],[DST_NOCACHE], - [OVS_DEFINE([HAVE_DST_NOCACHE])]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/net/rtnetlink.h], [rtnl_link_ops], - [extack], - [OVS_DEFINE([HAVE_EXT_ACK_IN_RTNL_LINKOPS])]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/linux/netfilter.h], [nf_hook_ops], - [list], - [OVS_DEFINE([HAVE_LIST_IN_NF_HOOK_OPS])]) - OVS_GREP_IFELSE([$KSRC/include/uapi/linux/netfilter/nf_conntrack_common.h], - [IP_CT_UNTRACKED]) - OVS_FIND_PARAM_IFELSE([$KSRC/include/linux/netdevice.h], - [netdev_master_upper_dev_link], [extack], - [OVS_DEFINE([HAVE_UPPER_DEV_LINK_EXTACK])]) - OVS_GREP_IFELSE([$KSRC/include/linux/compiler_types.h], - [__LINUX_COMPILER_TYPES_H], - [OVS_DEFINE([HAVE_LINUX_COMPILER_TYPES_H])]) - OVS_GREP_IFELSE([$KSRC/include/linux/timekeeping.h], - [ktime_get_ts64], - [OVS_DEFINE([HAVE_KTIME_GET_TS64])]) - OVS_GREP_IFELSE([$KSRC/include/net/net_namespace.h], - [EXPORT_SYMBOL_GPL(peernet2id_alloc)], - [OVS_DEFINE([HAVE_PEERNET2ID_ALLOC])]) - OVS_GREP_IFELSE([$KSRC/include/linux/timekeeping.h], - [ktime_get_ns], - [OVS_DEFINE([HAVE_KTIME_GET_NS])]) - OVS_GREP_IFELSE([$KSRC/include/net/inet_frag.h], - frag_percpu_counter_batch[], - [OVS_DEFINE([HAVE_FRAG_PERCPU_COUNTER_BATCH])]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], - [null_compute_pseudo], - [OVS_DEFINE([HAVE_NULL_COMPUTE_PSEUDO])]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], - [__skb_checksum_convert], - [OVS_DEFINE([HAVE_SKB_CHECKSUM_CONVERT])]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/linux/netdevice.h], [net_device], - [max_mtu], - [OVS_DEFINE([HAVE_NET_DEVICE_MAX_MTU])]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/net/ip6_tunnel.h], [__ip6_tnl_parm], - [erspan_ver], - [OVS_DEFINE([HAVE_IP6_TNL_PARM_ERSPAN_VER])]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], - [SKB_GSO_IPXIP6], - [OVS_DEFINE([HAVE_SKB_GSO_IPXIP6])]) - OVS_FIND_PARAM_IFELSE([$KSRC/include/net/ipv6.h], - [ip6_make_flowlabel], [fl6], - [OVS_DEFINE([HAVE_IP6_MAKE_FLOWLABEL_FL6])]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/net/ipv6.h], [netns_sysctl_ipv6], - [auto_flowlabels], - [OVS_DEFINE([HAVE_NETNS_SYSCTL_IPV6_AUTO_FLOWLABELS])]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], - [netif_keep_dst], - [OVS_DEFINE([HAVE_NETIF_KEEP_DST])]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/linux/netdevice.h], [net_device_ops], - [ndo_get_iflink], - [OVS_DEFINE([HAVE_NDO_GET_IFLINK])]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], - [skb_set_inner_ipproto], - [OVS_DEFINE([HAVE_SKB_SET_INNER_IPPROTO])]) - OVS_GREP_IFELSE([$KSRC/include/uapi/linux/if_tunnel.h], - [tunnel_encap_types], - [OVS_DEFINE([HAVE_TUNNEL_ENCAP_TYPES])]) - OVS_GREP_IFELSE([$KSRC/include/uapi/linux/if_tunnel.h], - [IFLA_IPTUN_ENCAP_TYPE], - [OVS_DEFINE([HAVE_IFLA_IPTUN_ENCAP_TYPE])]) - OVS_GREP_IFELSE([$KSRC/include/uapi/linux/if_tunnel.h], - [IFLA_IPTUN_COLLECT_METADATA], - [OVS_DEFINE([HAVE_IFLA_IPTUN_COLLECT_METADATA])]) - OVS_GREP_IFELSE([$KSRC/include/uapi/linux/if_tunnel.h], - [IFLA_GRE_ENCAP_DPORT]) - OVS_GREP_IFELSE([$KSRC/include/uapi/linux/if_tunnel.h], - [IFLA_GRE_COLLECT_METADATA]) - OVS_GREP_IFELSE([$KSRC/include/uapi/linux/if_tunnel.h], - [IFLA_GRE_IGNORE_DF]) - OVS_GREP_IFELSE([$KSRC/include/uapi/linux/if_tunnel.h], - [IFLA_GRE_FWMARK]) - OVS_GREP_IFELSE([$KSRC/include/uapi/linux/if_tunnel.h], - [IFLA_GRE_ERSPAN_INDEX]) - OVS_GREP_IFELSE([$KSRC/include/uapi/linux/if_tunnel.h], - [IFLA_GRE_ERSPAN_HWID]) - OVS_GREP_IFELSE([$KSRC/include/uapi/linux/if_tunnel.h], - [IFLA_IPTUN_FWMARK]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/linux/skbuff.h], [sk_buff], - [csum_valid], - [OVS_DEFINE([HAVE_SKBUFF_CSUM_VALID])]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], - [skb_checksum_simple_validate]) - OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], - [void.*ndo_get_stats64], - [OVS_DEFINE([HAVE_VOID_NDO_GET_STATS64])]) - OVS_GREP_IFELSE([$KSRC/include/linux/timer.h], [init_timer_deferrable], - [OVS_DEFINE([HAVE_INIT_TIMER_DEFERRABLE])]) - OVS_FIND_PARAM_IFELSE([$KSRC/include/net/ip_tunnels.h], - [ip_tunnel_info_opts_set], [flags], - [OVS_DEFINE([HAVE_IP_TUNNEL_INFO_OPTS_SET_FLAGS])]) - OVS_FIND_FIELD_IFELSE([$KSRC/include/net/inet_frag.h], [inet_frags], - [rnd], - [OVS_DEFINE([HAVE_INET_FRAGS_RND])]) - OVS_GREP_IFELSE([$KSRC/include/linux/overflow.h], [__LINUX_OVERFLOW_H], - [OVS_DEFINE([HAVE_OVERFLOW_H])]) - OVS_GREP_IFELSE([$KSRC/include/linux/mm.h], [kvmalloc_array], - [OVS_DEFINE([HAVE_KVMALLOC_ARRAY])]) - OVS_GREP_IFELSE([$KSRC/include/linux/mm.h], [kvmalloc_node], - [OVS_DEFINE([HAVE_KVMALLOC_NODE])]) - - if cmp -s datapath/linux/kcompat.h.new \ - datapath/linux/kcompat.h >/dev/null 2>&1; then - rm datapath/linux/kcompat.h.new - else - mv datapath/linux/kcompat.h.new datapath/linux/kcompat.h - fi -]) - dnl Checks for net/if_dl.h. dnl dnl (We use this as a proxy for checking whether we're building on FreeBSD diff --git a/configure.ac b/configure.ac index 65c57c7990fb..78498181cfd1 100644 --- a/configure.ac +++ b/configure.ac @@ -82,15 +82,12 @@ AC_SEARCH_LIBS([pthread_rwlock_tryrdlock], [pthread]) AC_SEARCH_LIBS([pthread_rwlockattr_destroy], [pthread]) AC_FUNC_STRERROR_R -OVS_CHECK_ESX OVS_CHECK_WIN64 OVS_CHECK_WIN32 OVS_CHECK_VISUAL_STUDIO_DDK OVN_CHECK_COVERAGE OVS_CHECK_NDEBUG -OVS_CHECK_NETLINK OVS_CHECK_OPENSSL -OVN_CHECK_LIBCAPNG OVN_CHECK_LOGDIR OVN_CHECK_PYTHON2 OVN_CHECK_PYTHON3 @@ -109,7 +106,7 @@ AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id], [], [], [[#include #include #include ]]) -AC_CHECK_FUNCS([mlockall strnlen getloadavg statvfs getmntent_r sendmmsg clock_gettime]) +AC_CHECK_FUNCS([strnlen getloadavg statvfs getmntent_r sendmmsg clock_gettime]) AC_CHECK_HEADERS([mntent.h sys/statvfs.h linux/types.h linux/if_ether.h]) AC_CHECK_HEADERS([linux/net_namespace.h stdatomic.h bits/floatn-common.h]) AC_CHECK_HEADERS([net/if_mib.h], [], [], [[#include @@ -172,11 +169,6 @@ OVS_CONDITIONAL_CC_OPTION([-Wno-unused-parameter], [HAVE_WNO_UNUSED_PARAMETER]) OVS_ENABLE_WERROR OVS_ENABLE_SPARSE -AC_ARG_VAR(KARCH, [Kernel Architecture String]) -AC_SUBST(KARCH) -OVS_CHECK_LINUX -OVS_CHECK_LINUX_TC -OVS_CHECK_DPDK OVS_CHECK_PRAGMA_MESSAGE OVN_CHECK_OVS OVS_CTAGS_IDENTIFIERS diff --git a/m4/ovn.m4 b/m4/ovn.m4 index 4d19a8d9e94f..277468f7f8ba 100644 --- a/m4/ovn.m4 +++ b/m4/ovn.m4 @@ -60,16 +60,6 @@ AC_DEFUN([OVS_CHECK_NDEBUG], [ndebug=false]) AM_CONDITIONAL([NDEBUG], [test x$ndebug = xtrue])]) -dnl Checks for ESX. -AC_DEFUN([OVS_CHECK_ESX], - [AC_CHECK_HEADER([vmware.h], - [ESX=yes], - [ESX=no]) - AM_CONDITIONAL([ESX], [test "$ESX" = yes]) - if test "$ESX" = yes; then - AC_DEFINE([ESX], [1], [Define to 1 if building on ESX.]) - fi]) - dnl Checks for MSVC x64 compiler. AC_DEFUN([OVS_CHECK_WIN64], [AC_CACHE_CHECK( @@ -203,42 +193,6 @@ AC_ARG_WITH([vstudiotargetver], AM_CONDITIONAL([VSTUDIO_DDK], [test -n "$VSTUDIO_CONFIG"]) ]) -dnl Checks for libcap-ng. -AC_DEFUN([OVN_CHECK_LIBCAPNG], - [AC_ARG_ENABLE( - [libcapng], - [AC_HELP_STRING([--disable-libcapng], [Disable Linux capability support])], - [case "${enableval}" in - (yes) libcapng=true ;; - (no) libcapng=false ;; - (*) AC_MSG_ERROR([bad value ${enableval} for --enable-libcapng]) ;; - esac], - [libcapng=check]) - - if test "$libcapng" != false; then - AC_CHECK_LIB([cap-ng], [capng_clear], [HAVE_LIBCAPNG=yes]) - - if test "$HAVE_LIBCAPNG" != yes; then - if test "$libcapng" = true ; then - AC_MSG_ERROR([libcap-ng support requested, but not found]) - fi - if test "$libcapng" = check ; then - AC_MSG_WARN([cannot find libcap-ng. ---user option will not be supported on Linux. -(you may use --disable-libcapng to suppress this warning). ]) - fi - fi - fi - - AC_SUBST([HAVE_LIBCAPNG]) - AM_CONDITIONAL([HAVE_LIBCAPNG], [test "$HAVE_LIBCAPNG" = yes]) - if test "$HAVE_LIBCAPNG" = yes; then - AC_DEFINE([HAVE_LIBCAPNG], [1], - [Define to 1 if libcap-ng is available.]) - CAPNG_LDADD="-lcap-ng" - AC_SUBST([CAPNG_LDADD]) - fi]) - dnl Checks for OpenSSL. AC_DEFUN([OVS_CHECK_OPENSSL], [AC_ARG_ENABLE( From patchwork Wed Sep 25 16:34:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Ben Pfaff X-Patchwork-Id: 1167555 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=ovn.org Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46dmwT39y3z9sNk for ; Thu, 26 Sep 2019 04:36:09 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 7BAE4DB2; Wed, 25 Sep 2019 18:34:07 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 153ECDA1 for ; Wed, 25 Sep 2019 18:34:07 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net [217.70.183.201]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 139D7B0 for ; Wed, 25 Sep 2019 18:33:54 +0000 (UTC) X-Originating-IP: 66.170.99.95 Received: from localhost.localdomain (unknown [66.170.99.95]) (Authenticated sender: blp@ovn.org) by relay8-d.mail.gandi.net (Postfix) with ESMTPSA id 634BB1BF20E; Wed, 25 Sep 2019 18:33:51 +0000 (UTC) From: Ben Pfaff To: dev@openvswitch.org Date: Wed, 25 Sep 2019 09:34:00 -0700 Message-Id: <20190925163400.1171-4-blp@ovn.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190925163400.1171-1-blp@ovn.org> References: <20190925163400.1171-1-blp@ovn.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Ben Pfaff Subject: [ovs-dev] [PATCH ovn 4/4] Documentation: Update 'internals' to reflect OVN split. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org This is a start and it should be generally and improvement, but further improvements are certainly possible. Signed-off-by: Ben Pfaff --- Documentation/automake.mk | 1 - Documentation/index.rst | 3 +- Documentation/internals/bugs.rst | 21 +- .../contributing/backporting-patches.rst | 127 +----------- .../contributing/coding-style-windows.rst | 183 ------------------ .../internals/contributing/coding-style.rst | 16 +- .../contributing/documentation-style.rst | 16 +- .../internals/contributing/index.rst | 9 +- .../contributing/submitting-patches.rst | 43 ++-- Documentation/internals/documentation.rst | 20 +- Documentation/internals/index.rst | 8 +- Documentation/internals/mailing-lists.rst | 29 +-- Documentation/internals/patchwork.rst | 10 +- Documentation/internals/release-process.rst | 28 +-- Documentation/internals/security.rst | 63 +++--- manpages.mk | 98 ---------- 16 files changed, 114 insertions(+), 561 deletions(-) delete mode 100644 Documentation/internals/contributing/coding-style-windows.rst diff --git a/Documentation/automake.mk b/Documentation/automake.mk index ff376fd831f0..5968d6941561 100644 --- a/Documentation/automake.mk +++ b/Documentation/automake.mk @@ -51,7 +51,6 @@ DOC_SOURCE = \ Documentation/internals/contributing/index.rst \ Documentation/internals/contributing/backporting-patches.rst \ Documentation/internals/contributing/coding-style.rst \ - Documentation/internals/contributing/coding-style-windows.rst \ Documentation/internals/contributing/documentation-style.rst \ Documentation/internals/contributing/libopenvswitch-abi.rst \ Documentation/internals/contributing/submitting-patches.rst \ diff --git a/Documentation/index.rst b/Documentation/index.rst index 290c0abdd0ad..c0c6c374de17 100644 --- a/Documentation/index.rst +++ b/Documentation/index.rst @@ -82,8 +82,7 @@ Learn more about the Open vSwitch project and about how you can contribute: - **Contributing:** :doc:`internals/contributing/submitting-patches` | :doc:`internals/contributing/backporting-patches` | - :doc:`internals/contributing/coding-style` | - :doc:`internals/contributing/coding-style-windows` + :doc:`internals/contributing/coding-style` - **Maintaining:** :doc:`internals/maintainers` | :doc:`internals/committer-responsibilities` | diff --git a/Documentation/internals/bugs.rst b/Documentation/internals/bugs.rst index c2bcceeb295d..c4c3f86166bc 100644 --- a/Documentation/internals/bugs.rst +++ b/Documentation/internals/bugs.rst @@ -21,12 +21,12 @@ Avoid deeper levels because they do not render well. -============================== -Reporting Bugs in Open vSwitch -============================== +===================== +Reporting Bugs in OVN +===================== We are eager to hear from users about problems that they have encountered with -Open vSwitch. This file documents how best to report bugs so as to ensure that +OVN. This file documents how best to report bugs so as to ensure that they can be fixed as quickly as possible. Please report bugs by sending email to bugs@openvswitch.org. @@ -43,7 +43,7 @@ The most important parts of your bug report are the following: Please also include the following information: -- The Open vSwitch version number (as output by ``ovs-vswitchd --version``). +- The OVN version number (as output by ``ovn-controller --version``). - The Git commit number (as output by ``git rev-parse HEAD``), if you built from a Git snapshot. @@ -55,16 +55,7 @@ The following are also handy sometimes: - The kernel version on which Open vSwitch is running (from ``/proc/version``) and the distribution and version number of your OS (e.g. "Centos 5.0"). -- The contents of the vswitchd configuration database (usually - ``/etc/openvswitch/conf.db``). - -- The output of ``ovs-dpctl show``. - -- If you have Open vSwitch configured to connect to an OpenFlow - controller, the output of ``ovs-ofctl show `` for each - ```` configured in the vswitchd configuration database. - -- A fix or workaround, if you have one. +- The contents of the northbound database. - Any other information that you think might be relevant. diff --git a/Documentation/internals/contributing/backporting-patches.rst b/Documentation/internals/contributing/backporting-patches.rst index 3e6f00459835..b10c9d7b0fb2 100644 --- a/Documentation/internals/contributing/backporting-patches.rst +++ b/Documentation/internals/contributing/backporting-patches.rst @@ -30,11 +30,11 @@ Backporting patches .. note:: This is an advanced topic for developers and maintainers. Readers should - familiarize themselves with building and running Open vSwitch, with the git - tool, and with the Open vSwitch patch submission process. + familiarize themselves with building and running OVN, with the git + tool, and with the OVN patch submission process. The backporting of patches from one git tree to another takes multiple forms -within Open vSwitch, but is broadly applied in the following fashion: +within OVN, but is broadly applied in the following fashion: - Contributors submit their proposed changes to the latest development branch - Contributors and maintainers provide feedback on the patches @@ -42,29 +42,18 @@ within Open vSwitch, but is broadly applied in the following fashion: development branch. - Maintainers backport changes from a development branch to release branches. -With regards to Open vSwitch user space code and code that does not comprise +With regards to OVN user space code and code that does not comprise the Linux datapath and compat code, the development branch is `master` in the -Open vSwitch repository. Patches are applied first to this branch, then to the +OVN repository. Patches are applied first to this branch, then to the most recent `branch-X.Y`, then earlier `branch-X.Z`, and so on. The most common kind of patch in this category is a bugfix which affects master and other branches. -For Linux datapath code, the primary development branch is in the `net-next`_ -tree as described in the section below, and patch discussion occurs on the -`netdev`__ mailing list. Patches are first applied to the upstream branch by the -networking maintainer, then the contributor backports the patch to the Open -vSwitch `master` development branch. Patches in this category may include -features which have been applied upstream, or bugfixes to the Open vSwitch -datapath code. For bugfixes, the patches subsequently follow the regular Open -vSwitch process as described above to reach older branches. - -__ http://vger.kernel.org/vger-lists.html#netdev - Changes to userspace components ------------------------------- Patches which are fixing bugs should be considered for backporting from -`master` to release branches. Open vSwitch contributors submit their patches +`master` to release branches. OVN contributors submit their patches targeted to the `master` branch, using the ``Fixes`` tag described in :doc:`submitting-patches`. The maintainer first applies the patch to `master`, then backports the patch to each older affected tree, as far back as it goes or @@ -86,112 +75,10 @@ not a trivial cherry-pick, then the maintainer may opt to submit the backport for the older branch on the mailing list for further review. This should be done in the same manner as described above. -Changes to Linux kernel components ----------------------------------- - -The Linux kernel components in Open vSwitch go through initial review in the -upstream Linux netdev community before they go into the Open vSwitch tree. As -such, backports from upstream to the Open vSwitch tree may include bugfixes or -new features. The `netdev-FAQ`_ describes the general process for merging -patches to the upstream Linux tree. - -To keep track of the changes which are made upstream against the changes which -have been backported to the Open vSwitch tree, backports should be done in the -order that they are applied to the upstream `net-next`_ tree. For example, if -the git history in ``linux/net/openvswitch/`` in the `net-next` tree lists -patches A, B and C that were applied (in that order), then the backports of -these patches to ``openvswitch/datapath/`` should be done submitted in the -order A, B, then C. - -Patches that are proposed against the Open vSwitch tree, including backports, -should follow the guidelines described in :doc:`submitting-patches`. Ideally, -a series which backports new functionality would also include a series of -patches for the userspace components which show how to use the new -functionality, and include tests to validate the behaviour. However, in the -interests of keeping the Open vSwitch tree in sync with upstream `net-next`, -contributors may send Open vSwitch kernel module changes independently of -userspace changes. - -.. _netdev-faq: https://www.kernel.org/doc/Documentation/networking/netdev-FAQ.txt -.. _net-next: http://git.kernel.org/cgit/linux/kernel/git/davem/net-next.git - -How to backport kernel patches -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -First, the patch should be submitted upstream to `netdev`. When the patch has -been applied to `net-next`, it is ready to be backported. Starting from the -Linux tree, use ``git format-patch`` to format each patch that should be -backported. For each of these patches, they may only include changes to -``linux/net/openvswitch/``, or they may include changes to other directories. -Depending on which files the patch touches, the backport may be easier or more -difficult to undertake. - -Start by formatting the relevant patches from the Linux tree. For example, to -format the last 5 patches to ``net/openvswitch``, going back from OVS commit -``1234c0ffee5``, placing them into ``/tmp/``: - -:: - - $ git format-patch -5 1234c0ffee5 net/openvswitch/ -o /tmp - -Next, change into the Open vSwitch directory and apply the patch: - -:: - - $ git am -p3 --reject --directory=datapath/ - -If this is successful, proceed to the next patch: - -:: - - $ git am --continue - -If this is unsuccessful, the above command applies all changes that it can -to the working tree, and leaves rejected hunks in corresponding \*.rej -files. Proceed by using ``git diff`` to identify the changes, and edit the -files so that the hunk matches what the file looks like when the -corresponding commit is checked out in the linux tree. When all hunks are -fixed, add the files to the index using ``git add``. - - -If the patch only changes filepaths under ``linux/net/openvswitch``, then most -likely the patch is fully backported. At this point, review the patch's changes -and compare with the latest upstream code for the modified functions. -Occasionally, there may be bugs introduced in a particular patch which were -fixed in a later patch upstream. To prevent breakage in the OVS tree, consider -rolling later bugfixes into the current patch - particularly if they are small, -clear bugfixes in the logic of this patch. Then proceed to the next patch using -``git am --continue``. If you made any changes to the patch compared with the -original version, describe the changes in the commit message. - -If the changes affects other paths, then you may also need to backport function -definitions from the upstream tree into the ``datapath/linux/compat`` -directory. First, attempt to compile the datapath. If this is successful, then -most likely there is no further work required. As per the previous paragraph, -consider reviewing and backporting any minor fixes to this code if applicable, -then proceed to the next patch using ``git am --continue``. - -If compilation fails, the compiler will show which functions are missing or -broken. Typically this should match with some function definitions provided in -the patch file. The following command will attempt to apply all such changes -from the patch into the ``openvswitch/datapath/linux/compat`` directory; Like -the previous ``git am`` command above, it may succeed or fail. If it succeeds, -review the patch and proceed to the next patch using ``git am --continue``. - -:: - - $ git am -p3 --reject --directory='datapath/linux/compat/' - -For each conflicting hunk, attempt to resolve the change so that the function -reflects what the function looks like in the upstream Linux tree. After -resolving these changes, compile the changes, add the modified files to the -index using ``git add``, review the patch, and proceed to the next patch using -``git am --continue``. - Submission ~~~~~~~~~~ -Once the patches are all assembled and working on the Open vSwitch tree, they +Once the patches are all assembled and working on the OVN tree, they need to be formatted again using ``git format-patch``. The common format for commit messages for Linux backport patches is as follows: diff --git a/Documentation/internals/contributing/coding-style-windows.rst b/Documentation/internals/contributing/coding-style-windows.rst deleted file mode 100644 index f7bc51ed4b74..000000000000 --- a/Documentation/internals/contributing/coding-style-windows.rst +++ /dev/null @@ -1,183 +0,0 @@ -.. - Licensed under the Apache License, Version 2.0 (the "License"); you may - not use this file except in compliance with the License. You may obtain - a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - License for the specific language governing permissions and limitations - under the License. - - Convention for heading levels in OVN documentation: - - ======= Heading 0 (reserved for the title in a document) - ------- Heading 1 - ~~~~~~~ Heading 2 - +++++++ Heading 3 - ''''''' Heading 4 - - Avoid deeper levels because they do not render well. - -========================================== -Open vSwitch Windows Datapath Coding Style -========================================== - -The :doc:`coding style ` guide gives the flexibility for each -platform to use its own coding style for the kernel datapath. This file -describes the specific coding style used in most of the C files in the Windows -kernel datapath of the Open vSwitch distribution. - -Most of the coding conventions applicable for the Open vSwitch distribution are -applicable to the Windows kernel datapath as well. There are some exceptions -and new guidelines owing to the commonly followed practices in Windows -kernel/driver code. They are noted as follows: - -Basics ------- - -- Limit lines to 79 characters. - - Many times, this is not possible due to long names of functions and it is - fine to go beyond the characters limit. One common example is when calling - into NDIS functions. - -Types ------ - -Use data types defined by Windows for most of the code. This is a common -practice in Windows driver code, and it makes integrating with the data -structures and functions defined by Windows easier. Example: ``DWORD`` and -``BOOLEAN``. - -Use caution in portions of the code that interface with the OVS userspace. OVS -userspace does not use Windows specific data types, and when copying data back -and forth between kernel and userspace, care should be exercised. - -Naming ------- - -It is common practice to use camel casing for naming variables, functions and -files in Windows. For types, especially structures, unions and enums, using -all upper case letters with words separated by '_' is common. These practices -can be used for OVS Windows datapath. However, use the following guidelines: - -- Use lower case to begin the name of a variable. - -- Do not use '_' to begin the name of the variable. '_' is to be used to begin - the parameters of a pre-processor macro. - -- Use upper case to begin the name of a function, enum, file name etc. - -- Static functions whose scope is limited to the file they are defined in can - be prefixed with '_'. This is not mandatory though. - -- For types, use all upper case for all letters with words separated by '_'. If - camel casing is preferred, use upper case for the first letter. - -- It is a common practice to define a pointer type by prefixing the letter 'P' - to a data type. The same practice can be followed here as well. - -For example:: - - static __inline BOOLEAN - OvsDetectTunnelRxPkt(POVS_FORWARDING_CONTEXT ovsFwdCtx, - POVS_FLOW_KEY flowKey) - { - POVS_VPORT_ENTRY tunnelVport = NULL; - - if (!flowKey->ipKey.nwFrag && - flowKey->ipKey.nwProto == IPPROTO_UDP && - flowKey->ipKey.l4.tpDst == VXLAN_UDP_PORT_NBO) { - tunnelVport = OvsGetTunnelVport(OVSWIN_VPORT_TYPE_VXLAN); - ovsActionStats.rxVxlan++; - } else { - return FALSE; - } - - if (tunnelVport) { - ASSERT(ovsFwdCtx->tunnelRxNic == NULL); - ovsFwdCtx->tunnelRxNic = tunnelVport; - return TRUE; - } - - return FALSE; - } - -For declaring variables of pointer type, use of the pointer data type prefixed -with 'P' is preferred over using '*'. This is not mandatory though, and is only -prescribed since it is a common practice in Windows. - -Example, #1 is preferred over #2 though #2 is also equally correct: - -1. ``PNET_BUFFER_LIST curNbl;`` -2. ``NET_BUFFER_LIST *curNbl;`` - -Comments --------- - -Comments should be written as full sentences that start with a capital letter -and end with a period. Putting two spaces between sentences is not necessary. - -``//`` can be used for comments as long as the comment is a single line -comment. For block comments, use ``/* */`` comments - -Functions ---------- - -Put the return type, function name, and the braces that surround the function's -code on separate lines, all starting in column 0. - -Before each function definition, write a comment that describes the function's -purpose, including each parameter, the return value, and side effects. -References to argument names should be given in single-quotes, e.g. 'arg'. The -comment should not include the function name, nor need it follow any formal -structure. The comment does not need to describe how a function does its work, -unless this information is needed to use the function correctly (this is often -better done with comments *inside* the function). - -Mention any side effects that the function has that are not obvious based on -the name of the function or based on the workflow it is called from. - -In the interest of keeping comments describing functions similar in structure, -use the following template. - -:: - - /* - *---------------------------------------------------------------------------- - * Any description of the function, arguments, return types, assumptions and - * side effects. - *---------------------------------------------------------------------------- - */ - -Source Files ------------- - -Each source file should state its license in a comment at the very top, -followed by a comment explaining the purpose of the code that is in that file. -The comment should explain how the code in the file relates to code in other -files. The goal is to allow a programmer to quickly figure out where a given -module fits into the larger system. - -The first non-comment line in a .c source file should be:: - - #include - -``#include`` directives should appear in the following order: - -1. ``#include `` - -2. The module's own headers, if any. Including this before any other header - (besides ````) ensures that the module's header file is - self-contained (see *Header Files*) below. - -3. Standard C library headers and other system headers, preferably in - alphabetical order. (Occasionally one encounters a set of system headers - that must be included in a particular order, in which case that order must - take precedence.) - -4. Open vSwitch headers, in alphabetical order. Use ``""``, not ``<>``, to - specify Open vSwitch header names. diff --git a/Documentation/internals/contributing/coding-style.rst b/Documentation/internals/contributing/coding-style.rst index 9fc3b0bd13a6..7e93f0881bf8 100644 --- a/Documentation/internals/contributing/coding-style.rst +++ b/Documentation/internals/contributing/coding-style.rst @@ -21,14 +21,12 @@ Avoid deeper levels because they do not render well. -========================= -Open vSwitch Coding Style -========================= +================ +OVN Coding Style +================ -This file describes the coding style used in most C files in the Open vSwitch -distribution. However, Linux kernel code datapath directory follows the Linux -kernel's established coding conventions. For the Windows kernel datapath code, -use the coding style described in :doc:`coding-style-windows`. +This file describes the coding style used in C files in the OVN +distribution. The following GNU indent options approximate this style. @@ -408,8 +406,8 @@ The first non-comment line in a ``.c`` source file should be: that must be included in a particular order, in which case that order must take precedence.) -4. Open vSwitch headers, in alphabetical order. Use ``""``, not ``<>``, to - specify Open vSwitch header names. +4. OVN headers, in alphabetical order. Use ``""``, not ``<>``, to + specify OVN header names. .. _header files: diff --git a/Documentation/internals/contributing/documentation-style.rst b/Documentation/internals/contributing/documentation-style.rst index 7e21283caaa0..e86fcf19c660 100644 --- a/Documentation/internals/contributing/documentation-style.rst +++ b/Documentation/internals/contributing/documentation-style.rst @@ -23,21 +23,15 @@ Avoid deeper levels because they do not render well. -================================ -Open vSwitch Documentation Style -================================ +======================= +OVN Documentation Style +======================= This file describes the documentation style used in all documentation found in -Open vSwitch. Documentation includes any documents found in ``Documentation`` +OVN. Documentation includes any documents found in ``Documentation`` along with any ``README``, ``MAINTAINERS``, or generally ``rst`` suffixed documents found in the project tree. -.. note:: - - This guide only applies to documentation for Open vSwitch v2.7. or greater. - Previous versions of Open vSwitch used a combination of Markdown and raw - plain text, and guidelines for these are not detailed here. - reStructuredText vs. Sphinx --------------------------- @@ -336,7 +330,7 @@ In addition to the above, man pages have some specific requirements: Option argument names should be enclosed in angle brackets, as above. -- Any references to the application or any other Open vSwitch application must +- Any references to the application or any other OVN application must be marked up using the `program` role. This allows for easy linking in the HTML output and correct formatting in the diff --git a/Documentation/internals/contributing/index.rst b/Documentation/internals/contributing/index.rst index 61f2b042c89b..77b52964b716 100644 --- a/Documentation/internals/contributing/index.rst +++ b/Documentation/internals/contributing/index.rst @@ -21,11 +21,11 @@ Avoid deeper levels because they do not render well. -============================ -Contributing to Open vSwitch -============================ +=================== +Contributing to OVN +=================== -The below guides provide information on contributing to Open vSwitch itself. +The below guides provide information on contributing to OVN itself. .. toctree:: :maxdepth: 2 @@ -33,6 +33,5 @@ The below guides provide information on contributing to Open vSwitch itself. submitting-patches backporting-patches coding-style - coding-style-windows documentation-style libopenvswitch-abi diff --git a/Documentation/internals/contributing/submitting-patches.rst b/Documentation/internals/contributing/submitting-patches.rst index ecee7f418bbe..5889e3c44aad 100644 --- a/Documentation/internals/contributing/submitting-patches.rst +++ b/Documentation/internals/contributing/submitting-patches.rst @@ -25,7 +25,7 @@ Submitting Patches ================== -Send changes to Open vSwitch as patches to dev@openvswitch.org. One patch per +Send changes to OVN as patches to dev@openvswitch.org. One patch per email. More details are included below. If you are using Git, then `git format-patch` takes care of most of the @@ -89,7 +89,7 @@ Where: sending only one patch. ````: - indicates the area of the Open vSwitch to which the change applies (often the + indicates the area of OVN to which the change applies (often the name of a source file or a directory). You may omit it if the change crosses multiple distinct pieces of code. @@ -129,7 +129,7 @@ The description should include: There is no need to describe what the patch actually changed, if the reader can see it for himself. -If the patch refers to a commit already in the Open vSwitch repository, please +If the patch refers to a commit already in the OVN repository, please include both the commit number and the subject of the patch, e.g. 'commit 632d136c (vswitch: Remove restriction on datapath names.)'. @@ -265,9 +265,9 @@ Examples of common tags follow. ``Submitted-at: `` - If a patch was submitted somewhere other than the Open vSwitch - development mailing list, such as a GitHub pull request, this header can - be used to reference the source. + If a patch was submitted somewhere other than the OVN development + mailing list, such as a GitHub pull request, this header can be used + to reference the source. :: @@ -300,7 +300,7 @@ Examples of common tags follow. If you would like to record which commit introduced a bug being fixed, you may do that with a “Fixes” header. This assists in determining - which OVS releases have the bug, so the patch can be applied to all + which OVN releases have the bug, so the patch can be applied to all affected versions. The easiest way to generate the header in the proper format is with this git command. This command also CCs the author of the commit being fixed, which makes sense unless the @@ -327,7 +327,7 @@ Developer's Certificate of Origin To help track the author of a patch as well as the submission chain, and be clear that the developer has authority to submit a patch for inclusion in -Open vSwitch please sign off your work. The sign off certifies the following: +OVN please sign off your work. The sign off certifies the following: :: @@ -362,19 +362,19 @@ See also http://developercertificate.org/. Feature Deprecation Guidelines ------------------------------ -Open vSwitch is intended to be user friendly. This means that under normal -circumstances we don't abruptly remove features from OVS that some users might +OVN is intended to be user friendly. This means that under normal +circumstances we don't abruptly remove features from OVN that some users might still be using. Otherwise, if we would, then we would possibly break our user setup when they upgrade and would receive bug reports. -Typical process to deprecate a feature in Open vSwitch is to: +Typical process to deprecate a feature in OVN is to: (a) Mention deprecation of a feature in the NEWS file. Also, mention expected - release or absolute time when this feature would be removed from OVS + release or absolute time when this feature would be removed from OVN altogether. Don't use relative time (e.g. "in 6 months") because that is not clearly interpretable. -(b) If Open vSwitch is configured to use deprecated feature it should print +(b) If OVN is configured to use deprecated feature it should print a warning message to the log files clearly indicating that feature is deprecated and that use of it should be avoided. @@ -384,9 +384,9 @@ Typical process to deprecate a feature in Open vSwitch is to: Also, if there is alternative feature to the one that is about to be marked as deprecated, then mention it in (a), (b) and (c) as well. -Remember to follow-up and actually remove the feature from OVS codebase once +Remember to follow-up and actually remove the feature from OVN codebase once deprecation grace period has expired and users had opportunity to use at least -one OVS release that would have informed them about feature deprecation! +one OVN release that would have informed them about feature deprecation! Comments -------- @@ -416,14 +416,11 @@ cannot convince your email client not to mangle patches, then sending the patch as an attachment is a second choice. Follow the style used in the code that you are modifying. :doc:`coding-style` -file describes the coding style used in most of Open vSwitch. Use Linux kernel -coding style for Linux kernel code. - -If your code is non-datapath code, you may use the ``utilities/checkpatch.py`` -utility as a quick check for certain commonly occurring mistakes (improper -leading/trailing whitespace, missing signoffs, some improper formatted patch -files). For Linux datapath code, it is a good idea to use the Linux script -``checkpatch.pl``. +file describes the coding style used in most of OVN. + +You may use the ``utilities/checkpatch.py`` utility as a quick check +for certain commonly occurring mistakes (improper leading/trailing +whitespace, missing signoffs, some improper formatted patch files). Example ------- diff --git a/Documentation/internals/documentation.rst b/Documentation/internals/documentation.rst index 424f244b40cf..f7077acb949e 100644 --- a/Documentation/internals/documentation.rst +++ b/Documentation/internals/documentation.rst @@ -23,18 +23,18 @@ Avoid deeper levels because they do not render well. -====================================== -How Open vSwitch's Documentation Works -====================================== +============================= +How OVN's Documentation Works +============================= This document provides a brief overview on how the documentation build system -within Open vSwitch works. This is intended to maximize the "bus factor" and +within OVN works. This is intended to maximize the "bus factor" and share best practices with other projects. reStructuredText and Sphinx --------------------------- -Nearly all of Open vSwitch's documentation is written in `reStructuredText`__, +Nearly all of OVN's documentation is written in `reStructuredText`__, with man pages being the sole exception. Of this documentation, most of it is fed into `Sphinx`__, which provides not only the ability to convert rST to a variety of other output formats but also allows for things like @@ -45,11 +45,11 @@ ovs-sphinx-theme ---------------- The documentation uses its own theme, `ovs-sphinx-theme`, which can be found on -GitHub__ and is published on pypi__. This is packaged separately from Open -vSwitch itself to ensure all documentation gets the latest version of the theme -(assuming there are no major version bumps in that package). If building -locally and the package is installed, it will be used. If the package is not -installed, Sphinx will fallback to the default theme. +GitHub__ and is published on pypi__. This is shared by Open vSwitch and OVN. +It is packaged separately to ensure all documentation gets the latest version +of the theme (assuming there are no major version bumps in that package). If +building locally and the package is installed, it will be used. If the package +is not installed, Sphinx will fallback to the default theme. The package is currently maintained by Stephen Finucane and Russell Bryant. diff --git a/Documentation/internals/index.rst b/Documentation/internals/index.rst index cf54d74b3ea1..d70a39d55b92 100644 --- a/Documentation/internals/index.rst +++ b/Documentation/internals/index.rst @@ -23,11 +23,11 @@ Avoid deeper levels because they do not render well. -====================== -Open vSwitch Internals -====================== +============= +OVN Internals +============= -Information for people who want to know more about the Open vSwitch project +Information for people who want to know more about the OVN project itself and how they might involved. .. toctree:: diff --git a/Documentation/internals/mailing-lists.rst b/Documentation/internals/mailing-lists.rst index 88f875357148..83fe54b46a3c 100644 --- a/Documentation/internals/mailing-lists.rst +++ b/Documentation/internals/mailing-lists.rst @@ -32,8 +32,9 @@ Mailing Lists ovs-announce ------------ -The `ovs-announce`__ mailing list is used to announce new versions of Open -vSwitch and is extremely low-volume. `(subscribe)`__ `(archives)`__ +The `ovs-announce`__ mailing list is used to announce new versions of +Open vSwitch and OVN and is extremely low-volume. `(subscribe)`__ +`(archives)`__ __ ovs-announce@openvswitch.org __ https://mail.openvswitch.org/mailman/listinfo/ovs-announce/ @@ -43,7 +44,7 @@ ovs-discuss ----------- The `ovs-discuss`__ mailing list is used to discuss plans and design decisions -for Open vSwitch. It is also an appropriate place for user questions. +for Open vSwitch and OVN. It is also an appropriate place for user questions. `(subscribe)`__ `(archives)`__ __ ovs-discuss@openvswitch.org @@ -60,26 +61,6 @@ __ ovs-dev@openvswitch.org __ https://mail.openvswitch.org/mailman/listinfo/ovs-dev/ __ https://mail.openvswitch.org/pipermail/ovs-dev/ -ovs-git -------- - -The `ovs-git`__ mailing list hooks into Open vSwitch's version control system -to receive commits. `(subscribe)`__ `(archives)`__ - -__ ovs-git@openvswitch.org -__ https://mail.openvswitch.org/mailman/listinfo/ovs-git/ -__ https://mail.openvswitch.org/pipermail/ovs-git/ - -ovs-build ---------- - -The `ovs-build`__ mailing list hooks into Open vSwitch's continuous integration -system to receive build reports. `(subscribe)`__ `(archives)`__ - -__ ovs-build@openvswitch.org -__ https://mail.openvswitch.org/mailman/listinfo/ovs-build/ -__ https://mail.openvswitch.org/pipermail/ovs-build/ - bugs ----- @@ -93,4 +74,4 @@ security The `security`__ mailing list is for submitting security vulnerabilities to the security team. -__ security@ovs.org +__ security@openvswitch.org diff --git a/Documentation/internals/patchwork.rst b/Documentation/internals/patchwork.rst index 379ad7d24b66..f1f827476c10 100644 --- a/Documentation/internals/patchwork.rst +++ b/Documentation/internals/patchwork.rst @@ -27,12 +27,12 @@ Patchwork ========= -Open vSwitch uses `Patchwork`__ to track the status of patches sent to the -:doc:`ovs-dev mailing list `. The Open vSwitch Patchwork +Open vSwitch and OVN use `Patchwork`__ to track the status of patches +sent to the :doc:`ovs-dev mailing list `. Our Patchwork instance can be found on `ozlabs.org`__. -Patchwork provides a number of useful features for developers working on Open -vSwitch: +Patchwork provides a number of useful features for developers working on +Open vSwitch and OVN: - Tracking the lifecycle of patches (accepted, rejected, under-review, ...) - Assigning reviewers (delegates) to patches @@ -60,7 +60,7 @@ from your `Patchwork User Profile`__ page. If you do not already have a Patchwork user account, you should create one now. Once your token is obtained, configure *git-pw* as below. Note that this must -be run from within the Open vSwitch Git repository:: +be run from within the OVN Git repository:: $ git config pw.server https://patchwork.ozlabs.org/ $ git config pw.project openvswitch diff --git a/Documentation/internals/release-process.rst b/Documentation/internals/release-process.rst index 2f6836a5f554..3396177b8059 100644 --- a/Documentation/internals/release-process.rst +++ b/Documentation/internals/release-process.rst @@ -21,20 +21,20 @@ Avoid deeper levels because they do not render well. -============================ -Open vSwitch Release Process -============================ +=================== +OVN Release Process +=================== -This document describes the process ordinarily used for Open vSwitch +This document describes the process ordinarily used for OVN development and release. Exceptions are sometimes necessary, so all of the statements here should be taken as subject to change through rough consensus of -Open vSwitch contributors, obtained through public discussion on, e.g., ovs-dev +OVN contributors, obtained through public discussion on, e.g., ovs-dev or the #openvswitch IRC channel. Release Strategy ---------------- -Open vSwitch feature development takes place on the "master" branch. +OVN feature development takes place on the "master" branch. Ordinarily, new features are rebased against master and applied directly. For features that take significant development, sometimes it is more appropriate to merge a separate branch into master; please discuss this on ovs-dev in advance. @@ -50,7 +50,7 @@ Scheduling`_ for the timing of each stage: Please propose and discuss exceptions on ovs-dev. 2. Fork a release branch from master, named for the expected release number, - e.g. "branch-2.3" for the branch that will yield Open vSwitch 2.3.x. + e.g. "branch-2.3" for the branch that will yield OVN 2.3.x. Release branches are intended for testing and stabilization. At this stage and in later stages, they should receive only bug fixes, not new features. @@ -67,7 +67,7 @@ Scheduling`_ for the timing of each stage: 3. When committers come to rough consensus that the release is ready, they release the .0 release on its branch, e.g. 2.3.0 for branch-2.3. To make the actual release, a committer pushes a signed tag named, e.g. v2.3.0, to - the Open vSwitch repository, makes a release tarball available on + the OVN repository, makes a release tarball available on openvswitch.org, and posts a release announcement to ovs-announce. 4. As bug fixes accumulate, or after important bugs or vulnerabilities are @@ -77,11 +77,11 @@ Scheduling`_ for the timing of each stage: At most two release branches are formally maintained at any given time: the latest release and the latest release designed as LTS. An LTS release is one -that the OVS project has designated as being maintained for a longer period of +that the OVN project has designated as being maintained for a longer period of time. Currently, an LTS release is maintained until the next LTS is chosen. There is not currently a strict guideline on how often a new LTS release is chosen, but so far it has been about every 2 years. That could change based on -the current state of OVS development. For example, we do not want to designate +the current state of OVN development. For example, we do not want to designate a new release as LTS that includes disruptive internal changes, as that may make it harder to support for a longer period of time. Discussion about choosing the next LTS release occurs on the OVS development mailing list. @@ -90,7 +90,7 @@ Release Numbering ----------------- The version number on master should normally end in .90. This indicates that -the Open vSwitch version is "almost" the next version to branch. +the OVN version is "almost" the next version to branch. Forking master into branch-x.y requires two commits to master. The first is titled "Prepare for x.y.0" and increments the version number to x.y. This is @@ -107,7 +107,7 @@ and adds a blank item to NEWS with an unspecified date. Release Scheduling ------------------ -Open vSwitch makes releases at the following six-month cadence. All dates are +OVN makes releases at the following six-month cadence. All dates are approximate: +---------------+----------------+--------------------------------------+ @@ -125,5 +125,5 @@ approximate: Contact ------- -Use dev@openvswitch.org to discuss the Open vSwitch development and release -process. +Use dev@openvswitch.org to discuss the Open vSwitch and OVN +development and release processes. diff --git a/Documentation/internals/security.rst b/Documentation/internals/security.rst index c6d936e2b2b8..c1fa2d8387c7 100644 --- a/Documentation/internals/security.rst +++ b/Documentation/internals/security.rst @@ -21,21 +21,20 @@ Avoid deeper levels because they do not render well. -=============================== -Open vSwitch's Security Process -=============================== +====================== +OVN's Security Process +====================== This is a proposed security vulnerability reporting and handling process for -Open vSwitch. It is based on the OpenStack vulnerability management process +OVN. It is based on the OpenStack vulnerability management process described at https://wiki.openstack.org/wiki/Vulnerability\_Management. -The OVS security team coordinates vulnerability management using the +The OVN security team coordinates vulnerability management using the ovs-security mailing list. Membership in the security team and subscription to its mailing list consists of a small number of trustworthy people, as -determined by rough consensus of the Open vSwitch committers on the -ovs-committers mailing list. The Open vSwitch security team should include Open -vSwitch committers, to ensure prompt and accurate vulnerability assessments and -patch review. +determined by rough consensus of the OVN committers. The OVN security team +should include OVN committers, to ensure prompt and accurate vulnerability +assessments and patch review. We encourage everyone involved in the security process to GPG-sign their emails. We additionally encourage GPG-encrypting one-on-one conversations as @@ -68,7 +67,7 @@ this process: (Integrity). * A bug (memory corruption, overflow, ...) that allows one to modify the - behaviour of OVS through external configuration interfaces such as OVSDB + behaviour of OVN through external configuration interfaces such as OVSDB (Integrity). * Privileged information is exposed to unprivileged users (Confidentiality). @@ -79,7 +78,7 @@ response will be to report the bug through the usual channels. Step 1: Reception ----------------- -To report an Open vSwitch vulnerability, send an email to the ovs-security +To report an OVN vulnerability, send an email to the ovs-security mailing list (see contact_ at the end of this document). A security team member should reply to the reporter acknowledging that the report has been received. @@ -89,20 +88,13 @@ Consider reporting the information mentioned in :doc:`bugs`, where relevant. Reporters may ask for a GPG key while initiating contact with the security team to deliver more sensitive reports. -The Linux kernel has `its own vulnerability management process -`__. Handling -of vulnerabilities that affect both the Open vSwitch tree and the upstream -Linux kernel should be reported through both processes. Send your report as a -single email to both the kernel and OVS security teams to allow those teams to -most easily coordinate among themselves. - Step 2: Assessment ------------------ The security team should discuss the vulnerability. The reporter should be included in the discussion (via "CC") to an appropriate degree. -The assessment should determine which Open vSwitch versions are affected (e.g. +The assessment should determine which OVN versions are affected (e.g. every version, only the latest release, only unreleased versions), the privilege required to take advantage of the vulnerability (e.g. any network user, any local L2 network user, any local system user, connected OpenFlow @@ -129,7 +121,7 @@ sections for the document include: :: * Title: The CVE identifier, a short description of the - vulnerability. The title should mention Open vSwitch. + vulnerability. The title should mention OVN. In email, the title becomes the subject. Pre-release advisories are often passed around in encrypted email, which have plaintext @@ -137,14 +129,14 @@ sections for the document include: * Description: A few paragraphs describing the general characteristics of the vulnerability, including the versions of - Open vSwitch that are vulnerable, the kind of attack that + OVN that are vulnerable, the kind of attack that exposes the vulnerability, and potential consequences of the attack. The description should re-state the CVE identifier, in case the subject is lost when an advisory is sent over email. - * Mitigation: How an Open vSwitch administrator can minimize the + * Mitigation: How an OVN administrator can minimize the potential for exploitation of the vulnerability, before applying a fix. If no mitigation is possible or recommended, explain why, to reduce the chance that at-risk users believe they are @@ -162,8 +154,7 @@ sections for the document include: * Acknowledgments: Thank the reporters. * Vulnerability Check: A step-by-step procedure by which a user - can determine whether an installed copy of Open vSwitch is - vulnerable. + can determine whether an installed copy of OVN is vulnerable. The procedure should clearly describe how to interpret the results, including expected results in vulnerable and @@ -172,7 +163,7 @@ sections for the document include: The procedure should assume as little understanding of Open vSwitch as possible, to make it more likely that a competent - administrator who does not specialize in Open vSwitch can + administrator who does not specialize in OVN can perform it successfully. The procedure should have minimal dependencies on tools that are @@ -190,11 +181,10 @@ sections for the document include: it has been tested. This section should state the risks of the procedure. For - example, if it can crash Open vSwitch or disrupt packet - forwarding, say so. + example, if it can crash OVN or disrupt packet forwarding, say so. It is more useful to explain how to check an installed and - running Open vSwitch than one built locally from source, but if + running OVN than one built locally from source, but if it is easy to use the procedure from a sandbox environment, it can be helpful to explain how to do so. @@ -204,12 +194,11 @@ sections for the document include: output by "git format-patch". The patch subjects should include the version for which they are - suited, e.g. "[PATCH branch-2.3]" for a patch against Open - vSwitch 2.3.x. If there are multiple patches for multiple - versions of Open vSwitch, put them in separate sections with - clear titles. + suited, e.g. "[PATCH branch-2.3]" for a patch against OVN 2.3.x. + If there are multiple patches for multiple versions of OVN, put + them in separate sections with clear titles. - Multiple patches for a single version of Open vSwitch, that must + Multiple patches for a single version of OVN, that must be stacked on top of each other to fix a single vulnerability, are undesirable because users are less likely to apply all of them correctly and in the correct order. @@ -241,14 +230,14 @@ embargo date and time set from the time sent. Downstream stakeholders are expected not to deploy or disclose patches until the embargo is passed. A disclosure date is negotiated by the security team working with the bug -submitter as well as vendors. However, the Open vSwitch security team holds the +submitter as well as vendors. However, the OVN security team holds the final say when setting a disclosure date. The timeframe for disclosure is from immediate (esp. if it's already publicly known) to a few weeks. As a basic default policy, we expect report date to disclosure date to be 10 to 15 business days. Operating system vendors are obvious downstream stakeholders. It may not be -necessary to be too choosy about who to include: any major Open vSwitch user +necessary to be too choosy about who to include: any major OVN user who is interested and can be considered trustworthy enough could be included. To become a downstream stakeholder, email the ovs-security mailing list. @@ -260,8 +249,8 @@ Step 5: Public Disclosure When the embargo expires, push the (reviewed) patches to appropriate branches, post the patches to the ovs-dev mailing list (noting that they have already been reviewed and applied), post the security advisory to appropriate mailing -lists (ovs-announce, ovs-discuss), and post the security advisory on the Open -vSwitch webpage. +lists (ovs-announce, ovs-discuss), and post the security advisory on the OVN +webpage. When the patch is applied to LTS (long-term support) branches, a new version should be released. diff --git a/manpages.mk b/manpages.mk index 6349e2845309..44e544681424 100644 --- a/manpages.mk +++ b/manpages.mk @@ -1,103 +1,5 @@ # Generated automatically -- do not modify! -*- buffer-read-only: t -*- -ovs/ovsdb/ovsdb-client.1: \ - ovs/ovsdb/ovsdb-client.1.in \ - lib/common-syn.man \ - lib/common.man \ - lib/daemon-syn.man \ - lib/daemon.man \ - lib/ovs.tmac \ - lib/ssl-bootstrap-syn.man \ - lib/ssl-bootstrap.man \ - lib/ssl-connect-syn.man \ - lib/ssl-connect.man \ - lib/ssl-syn.man \ - lib/ssl.man \ - lib/table.man \ - lib/vlog-syn.man \ - lib/vlog.man \ - ovsdb/ovsdb-schemas.man -ovs/ovsdb/ovsdb-client.1.in: -lib/common-syn.man: -lib/common.man: -lib/daemon-syn.man: -lib/daemon.man: -lib/ovs.tmac: -lib/ssl-bootstrap-syn.man: -lib/ssl-bootstrap.man: -lib/ssl-connect-syn.man: -lib/ssl-connect.man: -lib/ssl-syn.man: -lib/ssl.man: -lib/table.man: -lib/vlog-syn.man: -lib/vlog.man: -ovsdb/ovsdb-schemas.man: - -ovs/ovsdb/ovsdb-server.1: \ - ovs/ovsdb/ovsdb-server.1.in \ - lib/common-syn.man \ - lib/common.man \ - lib/coverage-unixctl.man \ - lib/daemon-syn.man \ - lib/daemon.man \ - lib/memory-unixctl.man \ - lib/ovs.tmac \ - lib/service-syn.man \ - lib/service.man \ - lib/ssl-bootstrap-syn.man \ - lib/ssl-bootstrap.man \ - lib/ssl-connect-syn.man \ - lib/ssl-connect.man \ - lib/ssl-peer-ca-cert-syn.man \ - lib/ssl-peer-ca-cert.man \ - lib/ssl-syn.man \ - lib/ssl.man \ - lib/unixctl-syn.man \ - lib/unixctl.man \ - lib/vlog-syn.man \ - lib/vlog-unixctl.man \ - lib/vlog.man -ovs/ovsdb/ovsdb-server.1.in: -lib/common-syn.man: -lib/common.man: -lib/coverage-unixctl.man: -lib/daemon-syn.man: -lib/daemon.man: -lib/memory-unixctl.man: -lib/ovs.tmac: -lib/service-syn.man: -lib/service.man: -lib/ssl-bootstrap-syn.man: -lib/ssl-bootstrap.man: -lib/ssl-connect-syn.man: -lib/ssl-connect.man: -lib/ssl-peer-ca-cert-syn.man: -lib/ssl-peer-ca-cert.man: -lib/ssl-syn.man: -lib/ssl.man: -lib/unixctl-syn.man: -lib/unixctl.man: -lib/vlog-syn.man: -lib/vlog-unixctl.man: -lib/vlog.man: - -ovs/ovsdb/ovsdb-tool.1: \ - ovs/ovsdb/ovsdb-tool.1.in \ - lib/common-syn.man \ - lib/common.man \ - lib/ovs.tmac \ - lib/vlog-syn.man \ - lib/vlog.man \ - ovsdb/ovsdb-schemas.man -ovs/ovsdb/ovsdb-tool.1.in: -lib/common-syn.man: -lib/common.man: -lib/ovs.tmac: -lib/vlog-syn.man: -lib/vlog.man: -ovsdb/ovsdb-schemas.man: - utilities/ovn-detrace.1: \ utilities/ovn-detrace.1.in \ lib/common-syn.man \