Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.2/patches/2235227/?format=api
{ "id": 2235227, "url": "http://patchwork.ozlabs.org/api/1.2/patches/2235227/?format=api", "web_url": "http://patchwork.ozlabs.org/project/openvswitch/patch/c2886187441315631c138c9db19776a46f15b364.1778261956.git.tredaelli@redhat.com/", "project": { "id": 47, "url": "http://patchwork.ozlabs.org/api/1.2/projects/47/?format=api", "name": "Open vSwitch", "link_name": "openvswitch", "list_id": "ovs-dev.openvswitch.org", "list_email": "ovs-dev@openvswitch.org", "web_url": "http://openvswitch.org/", "scm_url": "git@github.com:openvswitch/ovs.git", "webscm_url": "https://github.com/openvswitch/ovs", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<c2886187441315631c138c9db19776a46f15b364.1778261956.git.tredaelli@redhat.com>", "list_archive_url": null, "date": "2026-05-08T22:08:38", "name": "[ovs-dev,v3,6/6] libs: Introduce libopenvswitchutils for common routines.", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "974faede6e1b53ba027918482453e94ac8b2e78a", "submitter": { "id": 70949, "url": "http://patchwork.ozlabs.org/api/1.2/people/70949/?format=api", "name": "Timothy Redaelli", "email": "tredaelli@redhat.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/openvswitch/patch/c2886187441315631c138c9db19776a46f15b364.1778261956.git.tredaelli@redhat.com/mbox/", "series": [ { "id": 503454, "url": "http://patchwork.ozlabs.org/api/1.2/series/503454/?format=api", "web_url": "http://patchwork.ozlabs.org/project/openvswitch/list/?series=503454", "date": "2026-05-08T22:08:32", "name": "libopenvswitch: Restructure the massive OVS library into two parts.", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/503454/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2235227/comments/", "check": "fail", "checks": "http://patchwork.ozlabs.org/api/patches/2235227/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<ovs-dev-bounces@openvswitch.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "dev@openvswitch.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "ovs-dev@lists.linuxfoundation.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=dnFEz2F8;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org\n (client-ip=2605:bc80:3010::137; helo=smtp4.osuosl.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org)", "smtp4.osuosl.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key)\n header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=dnFEz2F8", "smtp4.osuosl.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com" ], "Received": [ "from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4gC3GD3gW1z1yHW\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 09 May 2026 08:10:28 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id 24C5C42183;\n\tFri, 8 May 2026 22:10:27 +0000 (UTC)", "from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id B98_cj6zdBEB; Fri, 8 May 2026 22:10:22 +0000 (UTC)", "from lists.linuxfoundation.org (lf-lists.osuosl.org\n [IPv6:2605:bc80:3010:104::8cd3:938])\n\tby smtp4.osuosl.org (Postfix) with ESMTPS id 89867421F7;\n\tFri, 8 May 2026 22:10:20 +0000 (UTC)", "from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id 66BEDC04EB;\n\tFri, 8 May 2026 22:10:20 +0000 (UTC)", "from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137])\n by lists.linuxfoundation.org (Postfix) with ESMTP id 147E4C04EB\n for <dev@openvswitch.org>; Fri, 8 May 2026 22:10:19 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp4.osuosl.org (Postfix) with ESMTP id A6C6C421D6\n for <dev@openvswitch.org>; Fri, 8 May 2026 22:10:07 +0000 (UTC)", "from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id A7QOaFBf4cCo for <dev@openvswitch.org>;\n Fri, 8 May 2026 22:10:04 +0000 (UTC)", "from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n by smtp4.osuosl.org (Postfix) with ESMTPS id 214484219D\n for <dev@openvswitch.org>; Fri, 8 May 2026 22:10:03 +0000 (UTC)", "from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-439-C7XlQS8GOwi8fzrWitWgbg-1; Fri,\n 08 May 2026 18:10:01 -0400", "from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id 3B14B195608E\n for <dev@openvswitch.org>; Fri, 8 May 2026 22:10:00 +0000 (UTC)", "from aldebaran.netbird.cloud (unknown [10.44.32.34])\n by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id 3C71F3002D31; Fri, 8 May 2026 22:09:59 +0000 (UTC)" ], "X-Virus-Scanned": [ "amavis at osuosl.org", "amavis at osuosl.org" ], "X-Comment": "SPF check N/A for local connections -\n client-ip=2605:bc80:3010:104::8cd3:938; helo=lists.linuxfoundation.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=<UNKNOWN> ", "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 smtp4.osuosl.org 89867421F7", "OpenDKIM Filter v2.11.0 smtp4.osuosl.org 214484219D" ], "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=170.10.129.124;\n helo=us-smtp-delivery-124.mimecast.com; envelope-from=tredaelli@redhat.com;\n receiver=<UNKNOWN>", "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp4.osuosl.org 214484219D", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1778278203;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=G0TGQ1Rcy054coFhmIrfzZiC8BZGDBpztqm5AVifZQ4=;\n b=dnFEz2F8NO/E25jYmz3ouIyb/t8qcqVmkRFt+mXIKhIQay0uF6PmseoEQbs3Elns68vDTt\n oeA3n05OGPikpfUbYsdo3Ku83L1SctUcIwmjdgipnwo6d2GeF+oZqxll4mTwlYqE/Uuqg5\n YEriCzKr4/3S3dehRWF3fzYDq9DaULc=", "X-MC-Unique": "C7XlQS8GOwi8fzrWitWgbg-1", "X-Mimecast-MFC-AGG-ID": "C7XlQS8GOwi8fzrWitWgbg_1778278200", "To": "dev@openvswitch.org", "Date": "Sat, 9 May 2026 00:08:38 +0200", "Message-ID": "\n <c2886187441315631c138c9db19776a46f15b364.1778261956.git.tredaelli@redhat.com>", "In-Reply-To": "<cover.1778261956.git.tredaelli@redhat.com>", "References": "<cover.1778261956.git.tredaelli@redhat.com>", "MIME-Version": "1.0", "X-Scanned-By": "MIMEDefang 3.4.1 on 10.30.177.4", "X-Mimecast-Spam-Score": "0", "X-Mimecast-MFC-PROC-ID": "H2Z8mJ9pEsKtuSiKlP5JH6Gp-6aMy1u2UN-DAk1wQRQ_1778278200", "X-Mimecast-Originator": "redhat.com", "Subject": "[ovs-dev] [PATCH v3 6/6] libs: Introduce libopenvswitchutils for\n common routines.", "X-BeenThere": "ovs-dev@openvswitch.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "<ovs-dev.openvswitch.org>", "List-Unsubscribe": "<https://mail.openvswitch.org/mailman/options/ovs-dev>,\n <mailto:ovs-dev-request@openvswitch.org?subject=unsubscribe>", "List-Archive": "<http://mail.openvswitch.org/pipermail/ovs-dev/>", "List-Post": "<mailto:ovs-dev@openvswitch.org>", "List-Help": "<mailto:ovs-dev-request@openvswitch.org?subject=help>", "List-Subscribe": "<https://mail.openvswitch.org/mailman/listinfo/ovs-dev>,\n <mailto:ovs-dev-request@openvswitch.org?subject=subscribe>", "From": "Timothy Redaelli via dev <ovs-dev@openvswitch.org>", "Reply-To": "Timothy Redaelli <tredaelli@redhat.com>", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Errors-To": "ovs-dev-bounces@openvswitch.org", "Sender": "\"dev\" <ovs-dev-bounces@openvswitch.org>" }, "content": "When building userspace utilities, having all the symbols and code\nin a singular library is quite handy. However, the downside is that\nsizes will bloat under statically linked conditions. Additionally,\nsome environments allow library constructors as code which executes\nbefore the main executable which would run even for utilities that\ndon't need them.\n\nSplit the most common code into a separate library that can be used\nby the ovsdb, appctl, and the openflow + datapath code that gets\nused by the ofctl, vsctl, dpctl, and vswitchd executables. Future\nwork could try to split this even further (although, the dependency\nsplit in the ofp area might be difficult to untangle).\n\nCo-authored-by: Aaron Conole <aconole@redhat.com>\nSigned-off-by: Aaron Conole <aconole@redhat.com>\nSigned-off-by: Timothy Redaelli <tredaelli@redhat.com>\n---\n NEWS | 18 +-\n configure.ac | 2 +\n debian/rules | 4 +-\n lib/.gitignore | 1 +\n lib/automake.mk | 589 +++++++++++++++++----------------\n lib/libopenvswitchutils.pc.in | 11 +\n lib/libopenvswitchutils.sym.in | 4 +\n ovsdb/automake.mk | 6 +-\n tests/automake.mk | 8 +-\n utilities/automake.mk | 15 +-\n vswitchd/automake.mk | 3 +-\n vtep/automake.mk | 2 +-\n 12 files changed, 361 insertions(+), 302 deletions(-)\n create mode 100644 lib/libopenvswitchutils.pc.in\n create mode 100644 lib/libopenvswitchutils.sym.in", "diff": "diff --git a/NEWS b/NEWS\nindex 1a3044cbf..65f72a9fe 100644\n--- a/NEWS\n+++ b/NEWS\n@@ -3,7 +3,23 @@ Post-v3.7.0\n - Userspace datapath:\n * ARP/ND lookups for native tunnel are now rate limited. The holdout\n timer can be configured with 'tnl/neigh/retrans_time'.\n-\n+ - libopenvswitch API/ABI change:\n+ * To make the link time dependencies (and disk space) a bit clearer,\n+ the libopenvswitch library has been split into two:\n+ - libopenvswitch (which is mostly datapath related)\n+ - libopenvswitchutils (which contains the container datastructures,\n+ general utilities, etc).\n+ * Several functions were renamed as part of a net-proto module\n+ separation:\n+ - packet_csum_pseudoheader => ip_csum_pseudoheader\n+ - packet_csum_pseudoheader6 => ip_csum_pseudoheader6\n+ - packet_csum_upperlayer6 => ip_csum_upperlayer6\n+ - packet_tcp_flag_to_string => tcp_flag_to_string\n+ - packet_format_tcp_flags => format_tcp_flags\n+ - packet_set_ipv6_flow_label => ip_set_ipv6_flow_label\n+ - packet_set_ipv6_tc => ip_set_ipv6_tc\n+ * The public header openvswitch/packets.h was renamed to\n+ openvswitch/net-proto.h.\n \n v3.7.0 - 16 Feb 2026\n --------------------\ndiff --git a/configure.ac b/configure.ac\nindex 56eacbbc7..3d4d9edb6 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -152,6 +152,7 @@ AC_CONFIG_FILES([\n ovsdb/libovsdb.sym\n ofproto/libofproto.sym\n lib/libsflow.sym\n+ lib/libopenvswitchutils.sym\n lib/libopenvswitch.sym\n vtep/libvtep.sym])\n \n@@ -212,6 +213,7 @@ AC_SUBST([OVS_LDFLAGS])\n \n AC_CONFIG_FILES(Makefile)\n AC_CONFIG_FILES(tests/atlocal)\n+AC_CONFIG_FILES(lib/libopenvswitchutils.pc)\n AC_CONFIG_FILES(lib/libopenvswitch.pc)\n AC_CONFIG_FILES(lib/libsflow.pc)\n AC_CONFIG_FILES(ofproto/libofproto.pc)\ndiff --git a/debian/rules b/debian/rules\nindex f36d45593..8941f67ba 100755\n--- a/debian/rules\n+++ b/debian/rules\n@@ -88,8 +88,8 @@ pybuild = \\\n \texport PKG_CONFIG_SYSTEM_INCLUDE_PATH=/; \\\n \texport PKG_CONFIG_SYSTEM_LIBRARY_PATH=/; \\\n \tenable_shared=no \\\n-\textra_cflags=\"`pkg-config --cflags libopenvswitch`\" \\\n-\textra_libs=\"-Wl,-Bstatic -lopenvswitch -Wl,-Bdynamic `pkg-config --libs --static libopenvswitch`\" \\\n+\textra_cflags=\"`pkg-config --cflags libopenvswitchutils`\" \\\n+\textra_libs=\"-Wl,-Bstatic -lopenvswitchutils -Wl,-Bdynamic `pkg-config --libs --static libopenvswitchutils`\" \\\n \tpybuild\n \n override_dh_auto_build:\ndiff --git a/lib/.gitignore b/lib/.gitignore\nindex ec9bdb092..31575a202 100644\n--- a/lib/.gitignore\n+++ b/lib/.gitignore\n@@ -19,4 +19,5 @@\n /vswitch-idl.h\n /vswitch-idl.ovsidl\n /libopenvswitch.pc\n+/libopenvswitchutils.pc\n /libsflow.pc\ndiff --git a/lib/automake.mk b/lib/automake.mk\nindex dd38762ad..f3d67033d 100644\n--- a/lib/automake.mk\n+++ b/lib/automake.mk\n@@ -5,76 +5,33 @@\n # notice and this notice are preserved. This file is offered as-is,\n # without warranty of any kind.\n \n-lib_LTLIBRARIES += lib/libopenvswitch.la\n-\n-lib_libopenvswitch_la_LIBADD = $(SSL_LIBS)\n-lib_libopenvswitch_la_LIBADD += $(CAPNG_LDADD)\n+# libopenvswitchutils: The common libraries used by any/all included utilities.\n+# Contains the container structures (maps, lists, etc), threading, i/o,\n+# logging, ovsdb-client, etc.\n+lib_LTLIBRARIES += lib/libopenvswitchutils.la\n \n+lib_libopenvswitchutils_la_LIBADD = $(SSL_LIBS)\n+lib_libopenvswitchutils_la_LIBADD += $(CAPNG_LDADD)\n \n if WIN32\n-lib_libopenvswitch_la_LIBADD += ${PTHREAD_LIBS}\n+lib_libopenvswitchutils_la_LIBADD += ${PTHREAD_LIBS}\n endif\n \n-lib_libopenvswitch_la_LDFLAGS = \\\n+lib_libopenvswitchutils_la_LDFLAGS = \\\n $(OVS_LTINFO) \\\n- -Wl,--version-script=$(top_builddir)/lib/libopenvswitch.sym \\\n+ -Wl,--version-script=$(top_builddir)/lib/libopenvswitchutils.sym \\\n $(AM_LDFLAGS)\n \n-if HAVE_AVX512F\n-if HAVE_LD_AVX512_GOOD\n-# Build library of avx512 code with CPU ISA CFLAGS enabled. This allows the\n-# compiler to use the ISA features required for the ISA optimized code-paths.\n-# Use LDFLAGS to compile only static library of this code, as it should be\n-# statically linked into vswitchd even if vswitchd is a shared build.\n-noinst_LTLIBRARIES += lib/libopenvswitchavx512.la\n-lib_libopenvswitch_la_LIBADD += lib/libopenvswitchavx512.la\n-lib_libopenvswitchavx512_la_CFLAGS = \\\n-\t-mavx512f \\\n-\t-mbmi \\\n-\t-mbmi2 \\\n-\t-fPIC \\\n-\t$(AM_CFLAGS)\n-lib_libopenvswitchavx512_la_SOURCES = \\\n-\tlib/dpif-netdev-avx512.c\n-if HAVE_AVX512BW\n-if HAVE_AVX512VL\n-lib_libopenvswitchavx512_la_CFLAGS += \\\n-\t-mavx512bw \\\n-\t-mavx512vl\n-lib_libopenvswitchavx512_la_SOURCES += \\\n-\tlib/dpif-netdev-extract-avx512.c \\\n-\tlib/dpif-netdev-lookup-avx512-gather.c\n-if HAVE_GCC_AVX512VL_GOOD\n-lib_libopenvswitchavx512_la_SOURCES += \\\n-\tlib/odp-execute-avx512.c\n-endif # HAVE_GCC_AVX512VL_GOOD\n-endif # HAVE_AVX512VL\n-endif # HAVE_AVX512BW\n-lib_libopenvswitchavx512_la_LDFLAGS = \\\n-\t-static\n-endif # HAVE_LD_AVX512_GOOD\n-endif # HAVE_AVX512F\n-\n-# Build core vswitch libraries as before\n-lib_libopenvswitch_la_SOURCES = \\\n+lib_libopenvswitchutils_la_SOURCES = \\\n \tlib/aes128.c \\\n \tlib/aes128.h \\\n \tlib/async-append.h \\\n \tlib/backtrace.c \\\n \tlib/backtrace.h \\\n-\tlib/bfd.c \\\n-\tlib/bfd.h \\\n \tlib/bitmap.h \\\n-\tlib/bundle.c \\\n-\tlib/bundle.h \\\n \tlib/byte-order.h \\\n \tlib/byteq.c \\\n \tlib/byteq.h \\\n-\tlib/cfm.c \\\n-\tlib/cfm.h \\\n-\tlib/classifier.c \\\n-\tlib/classifier.h \\\n-\tlib/classifier-private.h \\\n \tlib/ccmap.c \\\n \tlib/ccmap.h \\\n \tlib/cmap.c \\\n@@ -84,75 +41,23 @@ lib_libopenvswitch_la_SOURCES = \\\n \tlib/command-line.c \\\n \tlib/command-line.h \\\n \tlib/compiler.h \\\n-\tlib/connectivity.c \\\n-\tlib/connectivity.h \\\n-\tlib/conntrack-icmp.c \\\n-\tlib/conntrack-private.h \\\n-\tlib/conntrack-tcp.c \\\n-\tlib/conntrack-tp.c \\\n-\tlib/conntrack-tp.h \\\n-\tlib/conntrack-other.c \\\n-\tlib/conntrack.c \\\n-\tlib/conntrack.h \\\n \tlib/cooperative-multitasking.c \\\n \tlib/cooperative-multitasking.h \\\n \tlib/cooperative-multitasking-private.h \\\n \tlib/coverage.c \\\n \tlib/coverage.h \\\n-\tlib/ct-state.h \\\n \tlib/cpu.c \\\n \tlib/cpu.h \\\n \tlib/crc32c.c \\\n \tlib/crc32c.h \\\n \tlib/csum.c \\\n \tlib/csum.h \\\n-\tlib/ct-dpif.c \\\n-\tlib/ct-dpif.h \\\n \tlib/daemon.c \\\n \tlib/daemon.h \\\n \tlib/daemon-private.h \\\n \tlib/db-ctl-base.c \\\n \tlib/db-ctl-base.h \\\n-\tlib/dhcp.h \\\n-\tlib/dummy.c \\\n-\tlib/dummy.h \\\n-\tlib/dhparams.h \\\n \tlib/dirs.h \\\n-\tlib/dpctl.c \\\n-\tlib/dpctl.h \\\n-\tlib/dp-packet.h \\\n-\tlib/dp-packet.c \\\n-\tlib/dp-packet-gso.c \\\n-\tlib/dp-packet-gso.h \\\n-\tlib/dpdk.h \\\n-\tlib/dpif-netdev-extract-study.c \\\n-\tlib/dpif-netdev-lookup.h \\\n-\tlib/dpif-netdev-lookup.c \\\n-\tlib/dpif-netdev-lookup-autovalidator.c \\\n-\tlib/dpif-netdev-lookup-generic.c \\\n-\tlib/dpif-netdev.c \\\n-\tlib/dpif-netdev.h \\\n-\tlib/dpif-netdev-private-dfc.c \\\n-\tlib/dpif-netdev-private-dfc.h \\\n-\tlib/dpif-netdev-private-dpcls.h \\\n-\tlib/dpif-netdev-private-dpif.c \\\n-\tlib/dpif-netdev-private-dpif.h \\\n-\tlib/dpif-netdev-private-extract.c \\\n-\tlib/dpif-netdev-private-extract.h \\\n-\tlib/dpif-netdev-private-flow.h \\\n-\tlib/dpif-netdev-private-thread.h \\\n-\tlib/dpif-netdev-private.h \\\n-\tlib/dpif-netdev-perf.c \\\n-\tlib/dpif-netdev-perf.h \\\n-\tlib/dpif-offload.c \\\n-\tlib/dpif-offload.h \\\n-\tlib/dpif-offload-dummy.c \\\n-\tlib/dpif-offload-provider.h \\\n-\tlib/dpif-provider.h \\\n-\tlib/dpif.c \\\n-\tlib/dpif.h \\\n-\tlib/heap.c \\\n-\tlib/heap.h \\\n \tlib/dynamic-string.c \\\n \tlib/entropy.c \\\n \tlib/entropy.h \\\n@@ -160,13 +65,13 @@ lib_libopenvswitch_la_SOURCES = \\\n \tlib/fat-rwlock.h \\\n \tlib/fatal-signal.c \\\n \tlib/fatal-signal.h \\\n-\tlib/flow.c \\\n-\tlib/flow.h \\\n \tlib/guarded-list.c \\\n \tlib/guarded-list.h \\\n \tlib/hash.c \\\n \tlib/hash.h \\\n \tlib/hash-aarch64.h \\\n+\tlib/heap.c \\\n+\tlib/heap.h \\\n \tlib/hindex.c \\\n \tlib/hindex.h \\\n \tlib/hmap.c \\\n@@ -176,89 +81,23 @@ lib_libopenvswitch_la_SOURCES = \\\n \tlib/id-fpool.h \\\n \tlib/id-pool.c \\\n \tlib/id-pool.h \\\n-\tlib/if-notifier-manual.c \\\n-\tlib/if-notifier.h \\\n-\tlib/ipf.c \\\n-\tlib/ipf.h \\\n \tlib/jhash.c \\\n \tlib/jhash.h \\\n \tlib/json.c \\\n \tlib/json.h \\\n \tlib/jsonrpc.c \\\n \tlib/jsonrpc.h \\\n-\tlib/lacp.c \\\n-\tlib/lacp.h \\\n \tlib/latch.h \\\n-\tlib/learn.c \\\n-\tlib/learn.h \\\n-\tlib/learning-switch.c \\\n-\tlib/learning-switch.h \\\n \tlib/lockfile.c \\\n \tlib/lockfile.h \\\n-\tlib/mac-learning.c \\\n-\tlib/mac-learning.h \\\n-\tlib/match.c \\\n-\tlib/mcast-snooping.c \\\n-\tlib/mcast-snooping.h \\\n \tlib/memory.c \\\n \tlib/memory.h \\\n-\tlib/meta-flow.c \\\n \tlib/mov-avg.h \\\n \tlib/mpsc-queue.c \\\n \tlib/mpsc-queue.h \\\n-\tlib/multipath.c \\\n-\tlib/multipath.h \\\n \tlib/namemap.c \\\n-\tlib/net-proto.h \\\n-\tlib/net-proto.c \\\n-\tlib/netdev-dpdk.h \\\n-\tlib/netdev-dummy.c \\\n-\tlib/netdev-provider.h \\\n-\tlib/netdev-vport.c \\\n-\tlib/netdev-vport.h \\\n-\tlib/netdev-vport-private.h \\\n-\tlib/netdev.c \\\n-\tlib/netdev.h \\\n-\tlib/netflow.h \\\n-\tlib/netlink.c \\\n-\tlib/netlink.h \\\n-\tlib/netnsid.h \\\n-\tlib/nx-match.c \\\n-\tlib/nx-match.h \\\n \tlib/object-collection.c \\\n \tlib/object-collection.h \\\n-\tlib/odp-execute.c \\\n-\tlib/odp-execute.h \\\n-\tlib/odp-execute-private.c \\\n-\tlib/odp-execute-private.h \\\n-\tlib/odp-util.c \\\n-\tlib/odp-util.h \\\n-\tlib/ofp-actions.c \\\n-\tlib/ofp-bundle.c \\\n-\tlib/ofp-connection.c \\\n-\tlib/ofp-ct.c \\\n-\tlib/ofp-ed-props.c \\\n-\tlib/ofp-errors.c \\\n-\tlib/ofp-flow.c \\\n-\tlib/ofp-group.c \\\n-\tlib/ofp-ipfix.c \\\n-\tlib/ofp-match.c \\\n-\tlib/ofp-meter.c \\\n-\tlib/ofp-monitor.c \\\n-\tlib/ofp-msgs.c \\\n-\tlib/ofp-packet.c \\\n-\tlib/ofp-parse.c \\\n-\tlib/ofp-port.c \\\n-\tlib/ofp-print.c \\\n-\tlib/ofp-prop.c \\\n-\tlib/ofp-protocol.c \\\n-\tlib/ofp-queue.c \\\n-\tlib/ofp-switch.c \\\n-\tlib/ofp-table.c \\\n-\tlib/ofp-util.c \\\n-\tlib/ofp-version-opt.h \\\n-\tlib/ofp-version-opt.c \\\n-\tlib/ofpbuf.c \\\n \tlib/ovs-atomic-c++.h \\\n \tlib/ovs-atomic-c11.h \\\n \tlib/ovs-atomic-clang.h \\\n@@ -272,18 +111,16 @@ lib_libopenvswitch_la_SOURCES = \\\n \tlib/ovs-atomic-pthreads.h \\\n \tlib/ovs-atomic-x86_64.h \\\n \tlib/ovs-atomic.h \\\n-\tlib/ovs-lldp.c \\\n-\tlib/ovs-lldp.h \\\n \tlib/ovs-numa.c \\\n \tlib/ovs-numa.h \\\n \tlib/ovs-rcu.c \\\n \tlib/ovs-rcu.h \\\n \tlib/ovs-replay.c \\\n \tlib/ovs-replay.h \\\n-\tlib/ovs-router.h \\\n-\tlib/ovs-router.c \\\n \tlib/ovs-thread.c \\\n \tlib/ovs-thread.h \\\n+\tlib/ovsdb-condition.h \\\n+\tlib/ovsdb-condition.c \\\n \tlib/ovsdb-cs.c \\\n \tlib/ovsdb-cs.h \\\n \tlib/ovsdb-data.c \\\n@@ -295,24 +132,19 @@ lib_libopenvswitch_la_SOURCES = \\\n \tlib/ovsdb-idl.h \\\n \tlib/ovsdb-map-op.c \\\n \tlib/ovsdb-map-op.h \\\n-\tlib/ovsdb-set-op.c \\\n-\tlib/ovsdb-set-op.h \\\n-\tlib/ovsdb-condition.h \\\n-\tlib/ovsdb-condition.c \\\n \tlib/ovsdb-parser.c \\\n \tlib/ovsdb-parser.h \\\n \tlib/ovsdb-session.c \\\n \tlib/ovsdb-session.h \\\n+\tlib/ovsdb-set-op.c \\\n+\tlib/ovsdb-set-op.h \\\n \tlib/ovsdb-types.c \\\n \tlib/ovsdb-types.h \\\n-\tlib/ox-stat.c \\\n-\tlib/ox-stat.h \\\n-\tlib/pcap-file.c \\\n-\tlib/pcap-file.h \\\n \tlib/perf-counter.h \\\n \tlib/perf-counter.c \\\n-\tlib/stopwatch.h \\\n-\tlib/stopwatch.c \\\n+\tlib/net-proto.c \\\n+\tlib/net-proto.h \\\n+\tlib/ofpbuf.c \\\n \tlib/poll-loop.c \\\n \tlib/process.c \\\n \tlib/process.h \\\n@@ -320,15 +152,9 @@ lib_libopenvswitch_la_SOURCES = \\\n \tlib/pvector.h \\\n \tlib/random.c \\\n \tlib/random.h \\\n-\tlib/rconn.c \\\n \tlib/rculist.h \\\n \tlib/reconnect.c \\\n \tlib/reconnect.h \\\n-\tlib/rstp.c \\\n-\tlib/rstp.h \\\n-\tlib/rstp-common.h \\\n-\tlib/rstp-state-machines.c \\\n-\tlib/rstp-state-machines.h \\\n \tlib/sat-math.h \\\n \tlib/seq.c \\\n \tlib/seq.h \\\n@@ -347,8 +173,9 @@ lib_libopenvswitch_la_SOURCES = \\\n \tlib/sort.h \\\n \tlib/sset.c \\\n \tlib/sset.h \\\n-\tlib/stp.c \\\n-\tlib/stp.h \\\n+\tlib/stdio.c \\\n+\tlib/stopwatch.h \\\n+\tlib/stopwatch.c \\\n \tlib/stream-fd.c \\\n \tlib/stream-fd.h \\\n \tlib/stream-provider.h \\\n@@ -357,7 +184,6 @@ lib_libopenvswitch_la_SOURCES = \\\n \tlib/stream-tcp.c \\\n \tlib/stream.c \\\n \tlib/stream.h \\\n-\tlib/stdio.c \\\n \tlib/string.c \\\n \tlib/svec.c \\\n \tlib/svec.h \\\n@@ -374,22 +200,11 @@ lib_libopenvswitch_la_SOURCES = \\\n \tlib/timer.h \\\n \tlib/timeval.c \\\n \tlib/timeval.h \\\n-\tlib/tnl-neigh-cache.c \\\n-\tlib/tnl-neigh-cache.h \\\n-\tlib/tnl-ports.c \\\n-\tlib/tnl-ports.h \\\n-\tlib/netdev-native-tnl.c \\\n-\tlib/netdev-native-tnl.h \\\n \tlib/token-bucket.c \\\n-\tlib/tun-metadata.c \\\n-\tlib/tun-metadata.h \\\n-\tlib/unaligned.h \\\n \tlib/unicode.c \\\n \tlib/unicode.h \\\n \tlib/unixctl.c \\\n \tlib/unixctl.h \\\n-\tlib/userspace-tso.c \\\n-\tlib/userspace-tso.h \\\n \tlib/util.c \\\n \tlib/util.h \\\n \tlib/uuid.c \\\n@@ -397,35 +212,18 @@ lib_libopenvswitch_la_SOURCES = \\\n \tlib/uuidset.c \\\n \tlib/uuidset.h \\\n \tlib/valgrind.h \\\n-\tlib/vconn-provider.h \\\n-\tlib/vconn-stream.c \\\n-\tlib/vconn.c \\\n-\tlib/versions.h \\\n-\tlib/vl-mff-map.h \\\n-\tlib/vlan-bitmap.c \\\n-\tlib/vlan-bitmap.h \\\n-\tlib/vlog.c \\\n-\tlib/lldp/aa-structs.h \\\n-\tlib/lldp/lldp.c \\\n-\tlib/lldp/lldp-const.h \\\n-\tlib/lldp/lldp-tlv.h \\\n-\tlib/lldp/lldpd.c \\\n-\tlib/lldp/lldpd.h \\\n-\tlib/lldp/lldpd-structs.c \\\n-\tlib/lldp/lldpd-structs.h\n+\tlib/vlog.c\n \n if WIN32\n-lib_libopenvswitch_la_SOURCES += \\\n+lib_libopenvswitchutils_la_SOURCES += \\\n \tlib/daemon-windows.c \\\n \tlib/getopt_long.c \\\n \tlib/getrusage-windows.c \\\n \tlib/latch-windows.c \\\n-\tlib/route-table-stub.c \\\n-\tlib/if-notifier-stub.c \\\n \tlib/stream-windows.c \\\n \tlib/strsep.c\n else\n-lib_libopenvswitch_la_SOURCES += \\\n+lib_libopenvswitchutils_la_SOURCES += \\\n \tlib/daemon-unix.c \\\n \tlib/latch-unix.c \\\n \tlib/signals.c \\\n@@ -434,37 +232,268 @@ lib_libopenvswitch_la_SOURCES += \\\n \tlib/stream-unix.c\n endif\n \n-EXTRA_DIST += \\\n-\tlib/stdio.h.in \\\n-\tlib/string.h.in\n+if HAVE_POSIX_AIO\n+lib_libopenvswitchutils_la_SOURCES += lib/async-append-aio.c\n+else\n+lib_libopenvswitchutils_la_SOURCES += lib/async-append-null.c\n+endif\n+\n+if HAVE_OPENSSL\n+lib_libopenvswitchutils_la_SOURCES += lib/stream-ssl.c lib/dhparams.c\n+else\n+lib_libopenvswitchutils_la_SOURCES += lib/stream-nossl.c\n+endif\n+\n+lib_libopenvswitchutils_la_SOURCES += lib/dns-resolve.h\n+if HAVE_UNBOUND\n+lib_libopenvswitchutils_la_SOURCES += lib/dns-resolve.c\n+else\n+lib_libopenvswitchutils_la_SOURCES += lib/dns-resolve-stub.c\n+endif\n \n-nodist_lib_libopenvswitch_la_SOURCES = \\\n+nodist_lib_libopenvswitchutils_la_SOURCES = \\\n \tlib/dirs.c \\\n \tlib/ovsdb-server-idl.c \\\n \tlib/ovsdb-server-idl.h \\\n \tlib/vswitch-idl.c \\\n \tlib/vswitch-idl.h\n-CLEANFILES += $(nodist_lib_libopenvswitch_la_SOURCES)\n+CLEANFILES += $(nodist_lib_libopenvswitchutils_la_SOURCES)\n \n-lib_LTLIBRARIES += lib/libsflow.la\n-lib_libsflow_la_LDFLAGS = \\\n- $(OVS_LTINFO) \\\n- -Wl,--version-script=$(top_builddir)/lib/libsflow.sym \\\n- $(AM_LDFLAGS)\n-lib_libsflow_la_SOURCES = \\\n-\tlib/sflow_api.h \\\n-\tlib/sflow.h \\\n-\tlib/sflow_agent.c \\\n-\tlib/sflow_sampler.c \\\n-\tlib/sflow_poller.c \\\n-\tlib/sflow_receiver.c\n-lib_libsflow_la_CPPFLAGS = $(AM_CPPFLAGS)\n-lib_libsflow_la_CFLAGS = $(AM_CFLAGS) -D_BSD_SOURCE -D_DEFAULT_SOURCE\n-if HAVE_WNO_UNUSED\n-lib_libsflow_la_CFLAGS += -Wno-unused\n-endif\n-if HAVE_WNO_UNUSED_PARAMETER\n-lib_libsflow_la_CFLAGS += -Wno-unused-parameter\n+pkgconfig_DATA += lib/libopenvswitchutils.pc\n+\n+# libopenvswitch: switching datapath library.\n+# Contains the openflow handling, flow processing, netdev, dpif, etc.\n+\n+lib_LTLIBRARIES += lib/libopenvswitch.la\n+\n+lib_libopenvswitch_la_LIBADD = lib/libopenvswitchutils.la\n+\n+lib_libopenvswitch_la_LDFLAGS = \\\n+ $(OVS_LTINFO) \\\n+ -Wl,--version-script=$(top_builddir)/lib/libopenvswitch.sym \\\n+ $(AM_LDFLAGS)\n+\n+if HAVE_AVX512F\n+if HAVE_LD_AVX512_GOOD\n+# Build library of avx512 code with CPU ISA CFLAGS enabled. This allows the\n+# compiler to use the ISA features required for the ISA optimized code-paths.\n+# Use LDFLAGS to compile only static library of this code, as it should be\n+# statically linked into vswitchd even if vswitchd is a shared build.\n+noinst_LTLIBRARIES += lib/libopenvswitchavx512.la\n+lib_libopenvswitch_la_LIBADD += lib/libopenvswitchavx512.la\n+lib_libopenvswitchavx512_la_CFLAGS = \\\n+\t-mavx512f \\\n+\t-mbmi \\\n+\t-mbmi2 \\\n+\t-fPIC \\\n+\t$(AM_CFLAGS)\n+lib_libopenvswitchavx512_la_SOURCES = \\\n+\tlib/dpif-netdev-avx512.c\n+if HAVE_AVX512BW\n+if HAVE_AVX512VL\n+lib_libopenvswitchavx512_la_CFLAGS += \\\n+\t-mavx512bw \\\n+\t-mavx512vl\n+lib_libopenvswitchavx512_la_SOURCES += \\\n+\tlib/dpif-netdev-extract-avx512.c \\\n+\tlib/dpif-netdev-lookup-avx512-gather.c\n+if HAVE_GCC_AVX512VL_GOOD\n+lib_libopenvswitchavx512_la_SOURCES += \\\n+\tlib/odp-execute-avx512.c\n+endif # HAVE_GCC_AVX512VL_GOOD\n+endif # HAVE_AVX512VL\n+endif # HAVE_AVX512BW\n+lib_libopenvswitchavx512_la_LDFLAGS = \\\n+\t-static\n+endif # HAVE_LD_AVX512_GOOD\n+endif # HAVE_AVX512F\n+\n+# Build core vswitch libraries as before\n+lib_libopenvswitch_la_SOURCES = \\\n+\tlib/bfd.c \\\n+\tlib/bfd.h \\\n+\tlib/bundle.c \\\n+\tlib/bundle.h \\\n+\tlib/cfm.c \\\n+\tlib/cfm.h \\\n+\tlib/classifier.c \\\n+\tlib/classifier.h \\\n+\tlib/classifier-private.h \\\n+\tlib/connectivity.c \\\n+\tlib/connectivity.h \\\n+\tlib/conntrack-icmp.c \\\n+\tlib/conntrack-private.h \\\n+\tlib/conntrack-tcp.c \\\n+\tlib/conntrack-tp.c \\\n+\tlib/conntrack-tp.h \\\n+\tlib/conntrack-other.c \\\n+\tlib/conntrack.c \\\n+\tlib/conntrack.h \\\n+\tlib/ct-dpif.c \\\n+\tlib/ct-dpif.h \\\n+\tlib/ct-state.h \\\n+\tlib/dhcp.h \\\n+\tlib/dummy.c \\\n+\tlib/dummy.h \\\n+\tlib/dhparams.h \\\n+\tlib/dp-packet.h \\\n+\tlib/dp-packet.c \\\n+\tlib/dp-packet-gso.c \\\n+\tlib/dp-packet-gso.h \\\n+\tlib/pcap-file.c \\\n+\tlib/pcap-file.h \\\n+\tlib/dpdk.h \\\n+\tlib/dpctl.c \\\n+\tlib/dpctl.h \\\n+\tlib/dpif-netdev-extract-study.c \\\n+\tlib/dpif-netdev-lookup.h \\\n+\tlib/dpif-netdev-lookup.c \\\n+\tlib/dpif-netdev-lookup-autovalidator.c \\\n+\tlib/dpif-netdev-lookup-generic.c \\\n+\tlib/dpif-netdev.c \\\n+\tlib/dpif-netdev.h \\\n+\tlib/dpif-netdev-private-dfc.c \\\n+\tlib/dpif-netdev-private-dfc.h \\\n+\tlib/dpif-netdev-private-dpcls.h \\\n+\tlib/dpif-netdev-private-dpif.c \\\n+\tlib/dpif-netdev-private-dpif.h \\\n+\tlib/dpif-netdev-private-extract.c \\\n+\tlib/dpif-netdev-private-extract.h \\\n+\tlib/dpif-netdev-private-flow.h \\\n+\tlib/dpif-netdev-private-thread.h \\\n+\tlib/dpif-netdev-private.h \\\n+\tlib/dpif-netdev-perf.c \\\n+\tlib/dpif-netdev-perf.h \\\n+\tlib/dpif-offload.c \\\n+\tlib/dpif-offload.h \\\n+\tlib/dpif-offload-dummy.c \\\n+\tlib/dpif-offload-provider.h \\\n+\tlib/dpif-provider.h \\\n+\tlib/dpif.c \\\n+\tlib/dpif.h \\\n+\tlib/flow.c \\\n+\tlib/flow.h \\\n+\tlib/if-notifier.h \\\n+\tlib/if-notifier-manual.c \\\n+\tlib/ipf.c \\\n+\tlib/ipf.h \\\n+\tlib/lacp.c \\\n+\tlib/lacp.h \\\n+\tlib/learn.c \\\n+\tlib/learn.h \\\n+\tlib/learning-switch.c \\\n+\tlib/learning-switch.h \\\n+\tlib/mac-learning.c \\\n+\tlib/mac-learning.h \\\n+\tlib/match.c \\\n+\tlib/mcast-snooping.c \\\n+\tlib/mcast-snooping.h \\\n+\tlib/meta-flow.c \\\n+\tlib/multipath.c \\\n+\tlib/multipath.h \\\n+\tlib/netdev-dpdk.h \\\n+\tlib/netdev-dummy.c \\\n+\tlib/netdev-provider.h \\\n+\tlib/netdev-vport.c \\\n+\tlib/netdev-vport.h \\\n+\tlib/netdev-vport-private.h \\\n+\tlib/netdev.c \\\n+\tlib/netdev.h \\\n+\tlib/netflow.h \\\n+\tlib/netlink.c \\\n+\tlib/netlink.h \\\n+\tlib/netnsid.h \\\n+\tlib/nx-match.c \\\n+\tlib/nx-match.h \\\n+\tlib/odp-execute.c \\\n+\tlib/odp-execute.h \\\n+\tlib/odp-execute-private.c \\\n+\tlib/odp-execute-private.h \\\n+\tlib/odp-util.c \\\n+\tlib/odp-util.h \\\n+\tlib/ofp-actions.c \\\n+\tlib/ofp-bundle.c \\\n+\tlib/ofp-connection.c \\\n+\tlib/ofp-ct.c \\\n+\tlib/ofp-ed-props.c \\\n+\tlib/ofp-errors.c \\\n+\tlib/ofp-flow.c \\\n+\tlib/ofp-group.c \\\n+\tlib/ofp-ipfix.c \\\n+\tlib/ofp-match.c \\\n+\tlib/ofp-meter.c \\\n+\tlib/ofp-monitor.c \\\n+\tlib/ofp-msgs.c \\\n+\tlib/ofp-packet.c \\\n+\tlib/ofp-parse.c \\\n+\tlib/ofp-port.c \\\n+\tlib/ofp-print.c \\\n+\tlib/ofp-prop.c \\\n+\tlib/ofp-protocol.c \\\n+\tlib/ofp-queue.c \\\n+\tlib/ofp-switch.c \\\n+\tlib/ofp-table.c \\\n+\tlib/ofp-util.c \\\n+\tlib/ofp-version-opt.h \\\n+\tlib/ofp-version-opt.c \\\n+\tlib/ovs-lldp.c \\\n+\tlib/ovs-lldp.h \\\n+\tlib/ovs-router.h \\\n+\tlib/ovs-router.c \\\n+\tlib/ox-stat.c \\\n+\tlib/ox-stat.h \\\n+\tlib/rconn.c \\\n+\tlib/rstp.c \\\n+\tlib/rstp.h \\\n+\tlib/rstp-common.h \\\n+\tlib/rstp-state-machines.c \\\n+\tlib/rstp-state-machines.h \\\n+\tlib/stp.c \\\n+\tlib/stp.h \\\n+\tlib/tnl-neigh-cache.c \\\n+\tlib/tnl-neigh-cache.h \\\n+\tlib/tnl-ports.c \\\n+\tlib/tnl-ports.h \\\n+\tlib/netdev-native-tnl.c \\\n+\tlib/netdev-native-tnl.h \\\n+\tlib/tun-metadata.c \\\n+\tlib/tun-metadata.h \\\n+\tlib/unaligned.h \\\n+\tlib/userspace-tso.c \\\n+\tlib/userspace-tso.h \\\n+\tlib/vconn-provider.h \\\n+\tlib/vconn-stream.c \\\n+\tlib/vconn.c \\\n+\tlib/versions.h \\\n+\tlib/vl-mff-map.h \\\n+\tlib/vlan-bitmap.c \\\n+\tlib/vlan-bitmap.h \\\n+\tlib/lldp/aa-structs.h \\\n+\tlib/lldp/lldp.c \\\n+\tlib/lldp/lldp-const.h \\\n+\tlib/lldp/lldp-tlv.h \\\n+\tlib/lldp/lldpd.c \\\n+\tlib/lldp/lldpd.h \\\n+\tlib/lldp/lldpd-structs.c \\\n+\tlib/lldp/lldpd-structs.h\n+\n+if WIN32\n+lib_libopenvswitch_la_SOURCES += \\\n+\tlib/dpif-netlink.c \\\n+\tlib/dpif-netlink.h \\\n+\tlib/dpif-netlink-rtnl.h \\\n+\tlib/netdev-windows.c \\\n+\tlib/netlink-conntrack.c \\\n+\tlib/netlink-conntrack.h \\\n+\tlib/netlink-notifier.c \\\n+\tlib/netlink-notifier.h \\\n+\tlib/netlink-protocol.h \\\n+\tlib/netlink-socket.c \\\n+\tlib/netlink-socket.h \\\n+\tlib/route-table-stub.c \\\n+\tlib/if-notifier-stub.c \\\n+\tlib/wmi.c \\\n+\tlib/wmi.h\n endif\n \n if LINUX\n@@ -515,29 +544,6 @@ lib_libopenvswitch_la_SOURCES += \\\n \tlib/dpdk-stub.c\n endif\n \n-if WIN32\n-lib_libopenvswitch_la_SOURCES += \\\n-\tlib/dpif-netlink.c \\\n-\tlib/dpif-netlink.h \\\n-\tlib/dpif-netlink-rtnl.h \\\n-\tlib/netdev-windows.c \\\n-\tlib/netlink-conntrack.c \\\n-\tlib/netlink-conntrack.h \\\n-\tlib/netlink-notifier.c \\\n-\tlib/netlink-notifier.h \\\n-\tlib/netlink-protocol.h \\\n-\tlib/netlink-socket.c \\\n-\tlib/netlink-socket.h \\\n-\tlib/wmi.c \\\n-\tlib/wmi.h\n-endif\n-\n-if HAVE_POSIX_AIO\n-lib_libopenvswitch_la_SOURCES += lib/async-append-aio.c\n-else\n-lib_libopenvswitch_la_SOURCES += lib/async-append-null.c\n-endif\n-\n if HAVE_IF_DL\n lib_libopenvswitch_la_SOURCES += \\\n \tlib/if-notifier-bsd.c \\\n@@ -547,10 +553,13 @@ lib_libopenvswitch_la_SOURCES += \\\n \tlib/route-table-bsd.c\n endif\n \n+EXTRA_DIST += \\\n+\tlib/stdio.h.in \\\n+\tlib/string.h.in\n+\n+\n .PHONY: generate-dhparams-c\n if HAVE_OPENSSL\n-lib_libopenvswitch_la_SOURCES += lib/stream-ssl.c lib/dhparams.c\n-\n # Manually regenerates lib/dhparams.c. Not normally necessary since\n # lib/dhparams.c is part of the repository and doesn't normally need\n # updates.\n@@ -558,15 +567,27 @@ generate-dhparams-c:\n \t$(AM_V_GEN)cd $(srcdir) && \\\n \tbuild-aux/generate-dhparams-c > lib/dhparams.c.tmp && \\\n \tmv lib/dhparams.c.tmp lib/dhparams.c\n-else\n-lib_libopenvswitch_la_SOURCES += lib/stream-nossl.c\n endif\n \n-lib_libopenvswitch_la_SOURCES += lib/dns-resolve.h\n-if HAVE_UNBOUND\n-lib_libopenvswitch_la_SOURCES += lib/dns-resolve.c\n-else\n-lib_libopenvswitch_la_SOURCES += lib/dns-resolve-stub.c\n+lib_LTLIBRARIES += lib/libsflow.la\n+lib_libsflow_la_LDFLAGS = \\\n+ $(OVS_LTINFO) \\\n+ -Wl,--version-script=$(top_builddir)/lib/libsflow.sym \\\n+ $(AM_LDFLAGS)\n+lib_libsflow_la_SOURCES = \\\n+\tlib/sflow_api.h \\\n+\tlib/sflow.h \\\n+\tlib/sflow_agent.c \\\n+\tlib/sflow_sampler.c \\\n+\tlib/sflow_poller.c \\\n+\tlib/sflow_receiver.c\n+lib_libsflow_la_CPPFLAGS = $(AM_CPPFLAGS)\n+lib_libsflow_la_CFLAGS = $(AM_CFLAGS) -D_BSD_SOURCE -D_DEFAULT_SOURCE\n+if HAVE_WNO_UNUSED\n+lib_libsflow_la_CFLAGS += -Wno-unused\n+endif\n+if HAVE_WNO_UNUSED_PARAMETER\n+lib_libsflow_la_CFLAGS += -Wno-unused-parameter\n endif\n \n pkgconfig_DATA += \\\n@@ -649,7 +670,7 @@ lib/meta-flow.inc: $(srcdir)/build-aux/extract-ofp-fields include/openvswitch/me\n \t$(AM_V_GEN)$(run_python) $< meta-flow $(srcdir)/include/openvswitch/meta-flow.h > $@.tmp\n \t$(AM_V_at)mv $@.tmp $@\n lib/meta-flow.lo: lib/meta-flow.inc\n-lib/nx-match.inc: $(srcdir)/build-aux/extract-ofp-fields include/openvswitch/meta-flow.h \n+lib/nx-match.inc: $(srcdir)/build-aux/extract-ofp-fields include/openvswitch/meta-flow.h\n \t$(AM_V_GEN)$(run_python) $< nx-match $(srcdir)/include/openvswitch/meta-flow.h > $@.tmp\n \t$(AM_V_at)mv $@.tmp $@\n lib/nx-match.lo: lib/nx-match.inc\ndiff --git a/lib/libopenvswitchutils.pc.in b/lib/libopenvswitchutils.pc.in\nnew file mode 100644\nindex 000000000..d8915d4eb\n--- /dev/null\n+++ b/lib/libopenvswitchutils.pc.in\n@@ -0,0 +1,11 @@\n+prefix=@prefix@\n+exec_prefix=@exec_prefix@\n+libdir=@libdir@\n+includedir=@includedir@\n+\n+Name: libopenvswitchutils\n+Description: Open vSwitch common library\n+Version: @VERSION@\n+Libs: -L${libdir} -lopenvswitchutils\n+Libs.private: @LIBS@ @SSL_LIBS@ @CAPNG_LDADD@\n+Cflags: -I${includedir}\ndiff --git a/lib/libopenvswitchutils.sym.in b/lib/libopenvswitchutils.sym.in\nnew file mode 100644\nindex 000000000..f7e32afba\n--- /dev/null\n+++ b/lib/libopenvswitchutils.sym.in\n@@ -0,0 +1,4 @@\n+libopenvswitchutils_@LT_CURRENT@ {\n+global:\n+ *;\n+};\ndiff --git a/ovsdb/automake.mk b/ovsdb/automake.mk\nindex d484fe9de..de9489442 100644\n--- a/ovsdb/automake.mk\n+++ b/ovsdb/automake.mk\n@@ -63,7 +63,7 @@ MAN_FRAGMENTS += ovsdb/ovsdb-schemas.man\n # ovsdb-tool\n bin_PROGRAMS += ovsdb/ovsdb-tool\n ovsdb_ovsdb_tool_SOURCES = ovsdb/ovsdb-tool.c\n-ovsdb_ovsdb_tool_LDADD = ovsdb/libovsdb.la lib/libopenvswitch.la\n+ovsdb_ovsdb_tool_LDADD = ovsdb/libovsdb.la lib/libopenvswitchutils.la\n # ovsdb-tool.1\n man_MANS += ovsdb/ovsdb-tool.1\n CLEANFILES += ovsdb/ovsdb-tool.1\n@@ -72,7 +72,7 @@ MAN_ROOTS += ovsdb/ovsdb-tool.1.in\n # ovsdb-client\n bin_PROGRAMS += ovsdb/ovsdb-client\n ovsdb_ovsdb_client_SOURCES = ovsdb/ovsdb-client.c\n-ovsdb_ovsdb_client_LDADD = ovsdb/libovsdb.la lib/libopenvswitch.la\n+ovsdb_ovsdb_client_LDADD = ovsdb/libovsdb.la lib/libopenvswitchutils.la\n # ovsdb-client.1\n man_MANS += ovsdb/ovsdb-client.1\n CLEANFILES += ovsdb/ovsdb-client.1\n@@ -81,7 +81,7 @@ MAN_ROOTS += ovsdb/ovsdb-client.1.in\n # ovsdb-server\n sbin_PROGRAMS += ovsdb/ovsdb-server\n ovsdb_ovsdb_server_SOURCES = ovsdb/ovsdb-server.c\n-ovsdb_ovsdb_server_LDADD = ovsdb/libovsdb.la lib/libopenvswitch.la\n+ovsdb_ovsdb_server_LDADD = ovsdb/libovsdb.la lib/libopenvswitchutils.la\n # ovsdb-server.1\n man_MANS += ovsdb/ovsdb-server.1\n CLEANFILES += ovsdb/ovsdb-server.1\ndiff --git a/tests/automake.mk b/tests/automake.mk\nindex 685d4d2de..1e0260169 100644\n--- a/tests/automake.mk\n+++ b/tests/automake.mk\n@@ -450,12 +450,12 @@ $(srcdir)/package.m4: $(top_srcdir)/configure.ac\n noinst_PROGRAMS += tests/test-ovsdb\n tests_test_ovsdb_SOURCES = tests/test-ovsdb.c\n nodist_tests_test_ovsdb_SOURCES = tests/idltest.c tests/idltest.h\n-tests_test_ovsdb_LDADD = ovsdb/libovsdb.la lib/libopenvswitch.la\n+tests_test_ovsdb_LDADD = ovsdb/libovsdb.la lib/libopenvswitch.la lib/libopenvswitchutils.la\n \n noinst_PROGRAMS += tests/test-lib\n tests_test_lib_SOURCES = \\\n \ttests/test-lib.c\n-tests_test_lib_LDADD = lib/libopenvswitch.la\n+tests_test_lib_LDADD = lib/libopenvswitch.la lib/libopenvswitchutils.la\n \n # idltest schema and IDL\n OVSIDL_BUILT += tests/idltest.c tests/idltest.h tests/idltest.ovsidl\n@@ -530,11 +530,11 @@ tests_ovstest_SOURCES += \\\n \ttests/test-psample.c\n endif\n \n-tests_ovstest_LDADD = lib/libopenvswitch.la\n+tests_ovstest_LDADD = lib/libopenvswitch.la lib/libopenvswitchutils.la\n \n noinst_PROGRAMS += tests/test-stream\n tests_test_stream_SOURCES = tests/test-stream.c\n-tests_test_stream_LDADD = lib/libopenvswitch.la\n+tests_test_stream_LDADD = lib/libopenvswitch.la lib/libopenvswitchutils.la\n \n noinst_PROGRAMS += tests/test-strtok_r\n tests_test_strtok_r_SOURCES = tests/test-strtok_r.c\ndiff --git a/utilities/automake.mk b/utilities/automake.mk\nindex 45fcdff2c..6343ffcbe 100644\n--- a/utilities/automake.mk\n+++ b/utilities/automake.mk\n@@ -120,26 +120,29 @@ man_MANS += \\\n \tutilities/ovs-vsctl.8\n \n utilities_ovs_appctl_SOURCES = utilities/ovs-appctl.c\n-utilities_ovs_appctl_LDADD = lib/libopenvswitch.la\n+utilities_ovs_appctl_LDADD = lib/libopenvswitchutils.la\n \n utilities_ovs_testcontroller_SOURCES = utilities/ovs-testcontroller.c\n-utilities_ovs_testcontroller_LDADD = lib/libopenvswitch.la $(SSL_LIBS)\n+utilities_ovs_testcontroller_LDADD = lib/libopenvswitch.la \\\n+\tlib/libopenvswitchutils.la \\\n+\t$(SSL_LIBS)\n \n utilities_ovs_dpctl_SOURCES = utilities/ovs-dpctl.c\n-utilities_ovs_dpctl_LDADD = lib/libopenvswitch.la\n+utilities_ovs_dpctl_LDADD = lib/libopenvswitch.la lib/libopenvswitchutils.la\n \n utilities_ovs_ofctl_SOURCES = utilities/ovs-ofctl.c\n utilities_ovs_ofctl_LDADD = \\\n \tofproto/libofproto.la \\\n-\tlib/libopenvswitch.la\n+\tlib/libopenvswitch.la \\\n+\tlib/libopenvswitchutils.la\n \n utilities_ovs_vsctl_SOURCES = utilities/ovs-vsctl.c\n-utilities_ovs_vsctl_LDADD = lib/libopenvswitch.la\n+utilities_ovs_vsctl_LDADD = lib/libopenvswitch.la lib/libopenvswitchutils.la\n \n if LINUX\n noinst_PROGRAMS += utilities/nlmon\n utilities_nlmon_SOURCES = utilities/nlmon.c\n-utilities_nlmon_LDADD = lib/libopenvswitch.la\n+utilities_nlmon_LDADD = lib/libopenvswitch.la lib/libopenvswitchutils.la\n endif\n \n FLAKE8_PYFILES += utilities/ovs-pcap.in \\\ndiff --git a/vswitchd/automake.mk b/vswitchd/automake.mk\nindex 830c9a188..9f3f26bdd 100644\n--- a/vswitchd/automake.mk\n+++ b/vswitchd/automake.mk\n@@ -12,7 +12,8 @@ vswitchd_ovs_vswitchd_SOURCES = \\\n vswitchd_ovs_vswitchd_LDADD = \\\n \tofproto/libofproto.la \\\n \tlib/libsflow.la \\\n-\tlib/libopenvswitch.la\n+\tlib/libopenvswitch.la \\\n+\tlib/libopenvswitchutils.la\n vswitchd_ovs_vswitchd_LDFLAGS = $(AM_LDFLAGS) $(DPDK_vswitchd_LDFLAGS)\n MAN_ROOTS += vswitchd/ovs-vswitchd.8.in\n \ndiff --git a/vtep/automake.mk b/vtep/automake.mk\nindex e549922d9..e513abeea 100644\n--- a/vtep/automake.mk\n+++ b/vtep/automake.mk\n@@ -34,7 +34,7 @@ man_MANS += \\\n vtep/vtep-ctl.8\n \n vtep_vtep_ctl_SOURCES = vtep/vtep-ctl.c\n-vtep_vtep_ctl_LDADD = vtep/libvtep.la lib/libopenvswitch.la\n+vtep_vtep_ctl_LDADD = vtep/libvtep.la lib/libopenvswitchutils.la\n \n # ovs-vtep\n scripts_SCRIPTS += \\\n", "prefixes": [ "ovs-dev", "v3", "6/6" ] }