get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.1/patches/2232483/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2232483,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2232483/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/openvswitch/patch/fb05a7394814bb2ca131bc35b54b8eb267e86977.1777902424.git.tredaelli@redhat.com/",
    "project": {
        "id": 47,
        "url": "http://patchwork.ozlabs.org/api/1.1/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"
    },
    "msgid": "<fb05a7394814bb2ca131bc35b54b8eb267e86977.1777902424.git.tredaelli@redhat.com>",
    "date": "2026-05-04T15:23:44",
    "name": "[ovs-dev,v2,5/5] libs: Introduce libopenvswitchutils to isolate common routines.",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "4d0c3a8f2ee503f56121cd5d9399696c942bff76",
    "submitter": {
        "id": 70949,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/70949/?format=api",
        "name": "Timothy Redaelli",
        "email": "tredaelli@redhat.com"
    },
    "delegate": {
        "id": 57772,
        "url": "http://patchwork.ozlabs.org/api/1.1/users/57772/?format=api",
        "username": "imaximets",
        "first_name": "Ilya",
        "last_name": "Maximets",
        "email": "i.maximets@samsung.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/openvswitch/patch/fb05a7394814bb2ca131bc35b54b8eb267e86977.1777902424.git.tredaelli@redhat.com/mbox/",
    "series": [
        {
            "id": 502681,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/502681/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/openvswitch/list/?series=502681",
            "date": "2026-05-04T15:23:39",
            "name": "libopenvswitch: Restructure the massive OVS library into two parts",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/502681/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2232483/comments/",
    "check": "success",
    "checks": "http://patchwork.ozlabs.org/api/patches/2232483/checks/",
    "tags": {},
    "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=gYzIbUlk;\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=gYzIbUlk",
            "smtp1.osuosl.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com",
            "smtp1.osuosl.org;\n dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com\n header.a=rsa-sha256 header.s=mimecast20190719 header.b=gYzIbUlk"
        ],
        "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 4g8QRk6Lt6z1yJ0\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 05 May 2026 01:24:34 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id F38EA41B46;\n\tMon,  4 May 2026 15:24:32 +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 vJo5MvSqLojE; Mon,  4 May 2026 15:24:30 +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 CE6CD41C61;\n\tMon,  4 May 2026 15:24:30 +0000 (UTC)",
            "from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id B595CC04EA;\n\tMon,  4 May 2026 15:24:30 +0000 (UTC)",
            "from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138])\n by lists.linuxfoundation.org (Postfix) with ESMTP id 6D1BCC04E9\n for <dev@openvswitch.org>; Mon,  4 May 2026 15:24:29 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n by smtp1.osuosl.org (Postfix) with ESMTP id C0F4384609\n for <dev@openvswitch.org>; Mon,  4 May 2026 15:24:13 +0000 (UTC)",
            "from smtp1.osuosl.org ([127.0.0.1])\n by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id U3IU98BiviBB for <dev@openvswitch.org>;\n Mon,  4 May 2026 15:24:09 +0000 (UTC)",
            "from us-smtp-delivery-224.mimecast.com\n (us-smtp-delivery-224.mimecast.com [170.10.133.224])\n by smtp1.osuosl.org (Postfix) with ESMTPS id 991A384646\n for <dev@openvswitch.org>; Mon,  4 May 2026 15:24:08 +0000 (UTC)",
            "from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-426-bnl8up7LNUyv-24BrjoevA-1; Mon,\n 04 May 2026 11:24:05 -0400",
            "from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])\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-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id 28CB71800345\n for <dev@openvswitch.org>; Mon,  4 May 2026 15:24:05 +0000 (UTC)",
            "from aldebaran.netbird.cloud (unknown [10.44.48.44])\n by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id EB81F1944CED; Mon,  4 May 2026 15:24:03 +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 CE6CD41C61",
            "OpenDKIM Filter v2.11.0 smtp1.osuosl.org 991A384646"
        ],
        "Received-SPF": "Pass (sender SPF authorized) identity=helo;\n client-ip=170.10.133.224; helo=us-smtp-delivery-224.mimecast.com;\n envelope-from=<>; receiver=<UNKNOWN>",
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp1.osuosl.org 991A384646",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1777908247;\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=TYaK9ikRS/zXuNMFy7EavjlVVBXq7ccA7DvVfAc7v7c=;\n b=gYzIbUlkq/JKnj19bIaOhdBN1VEztUOHyIUq3FJV5D+fp8Mj9LF/pYA0Ziy/0zuOv50YRH\n 6cbo3mUGCHTr8mzrfvlIA1gHYjeLS1LROi6e5EyeWfy/t3ZFRgPQMPR2euUd0Urbw9NGQT\n vUNWUXtFKMWefk2tb7B2r+t2/dvvMyc=",
        "X-MC-Unique": "bnl8up7LNUyv-24BrjoevA-1",
        "X-Mimecast-MFC-AGG-ID": "bnl8up7LNUyv-24BrjoevA_1777908245",
        "To": "dev@openvswitch.org",
        "Date": "Mon,  4 May 2026 17:23:44 +0200",
        "Message-ID": "\n <fb05a7394814bb2ca131bc35b54b8eb267e86977.1777902424.git.tredaelli@redhat.com>",
        "In-Reply-To": "<cover.1777902424.git.tredaelli@redhat.com>",
        "References": "<cover.1777902424.git.tredaelli@redhat.com>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 3.0 on 10.30.177.17",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-MFC-PROC-ID": "bUCV-UFHZ3d9r2-nXVBAN_f8khg0EwduHr70LHhK5wI_1777908245",
        "X-Mimecast-Originator": "<>",
        "Subject": "[ovs-dev] [PATCH v2 5/5] libs: Introduce libopenvswitchutils to\n isolate 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": "From: Timothy Redaelli <tredaelli@redhat.com>\n\nWhen 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                | 591 +++++++++++++++++----------------\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, 362 insertions(+), 303 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..d065800c6 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,22 @@ 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 +64,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 +80,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 +110,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 +131,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 +151,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 +172,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 +183,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 +199,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 +211,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 +231,269 @@ 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/dirs.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",
        "v2",
        "5/5"
    ]
}