Show a cover letter.

GET /api/covers/2218976/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2218976,
    "url": "http://patchwork.ozlabs.org/api/covers/2218976/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/ovn/cover/20260402082510.1417440-1-amusil@redhat.com/",
    "project": {
        "id": 68,
        "url": "http://patchwork.ozlabs.org/api/projects/68/?format=api",
        "name": "Open Virtual Network development",
        "link_name": "ovn",
        "list_id": "ovs-dev.openvswitch.org",
        "list_email": "ovs-dev@openvswitch.org",
        "web_url": "http://openvswitch.org/",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260402082510.1417440-1-amusil@redhat.com>",
    "list_archive_url": null,
    "date": "2026-04-02T08:25:04",
    "name": "[ovs-dev,0/6] Netlink notifier consolidation and nexthop table support",
    "submitter": {
        "id": 83634,
        "url": "http://patchwork.ozlabs.org/api/people/83634/?format=api",
        "name": "Ales Musil",
        "email": "amusil@redhat.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/ovn/cover/20260402082510.1417440-1-amusil@redhat.com/mbox/",
    "series": [
        {
            "id": 498451,
            "url": "http://patchwork.ozlabs.org/api/series/498451/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/ovn/list/?series=498451",
            "date": "2026-04-02T08:25:04",
            "name": "Netlink notifier consolidation and nexthop table support",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/498451/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/covers/2218976/comments/",
    "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=D3gI0wr9;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org\n (client-ip=2605:bc80:3010::136; helo=smtp3.osuosl.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org)",
            "smtp3.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=D3gI0wr9",
            "smtp4.osuosl.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com",
            "smtp4.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=D3gI0wr9"
        ],
        "Received": [
            "from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136])\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 4fmZfn6mZjz1yCs\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 02 Apr 2026 19:25:21 +1100 (AEDT)",
            "from localhost (localhost [127.0.0.1])\n\tby smtp3.osuosl.org (Postfix) with ESMTP id 1C31760C01;\n\tThu,  2 Apr 2026 08:25:20 +0000 (UTC)",
            "from smtp3.osuosl.org ([127.0.0.1])\n by localhost (smtp3.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id BlHtw423CCPq; Thu,  2 Apr 2026 08:25:19 +0000 (UTC)",
            "from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56])\n\tby smtp3.osuosl.org (Postfix) with ESMTPS id 1939760672;\n\tThu,  2 Apr 2026 08:25:19 +0000 (UTC)",
            "from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id E1271C0070;\n\tThu,  2 Apr 2026 08:25:18 +0000 (UTC)",
            "from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137])\n by lists.linuxfoundation.org (Postfix) with ESMTP id 20A4BC003D\n for <dev@openvswitch.org>; Thu,  2 Apr 2026 08:25:18 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n by smtp4.osuosl.org (Postfix) with ESMTP id 06F2E40621\n for <dev@openvswitch.org>; Thu,  2 Apr 2026 08:25:18 +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 d85E1nIJgUtQ for <dev@openvswitch.org>;\n Thu,  2 Apr 2026 08:25:17 +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 F1D44405CB\n for <dev@openvswitch.org>; Thu,  2 Apr 2026 08:25:16 +0000 (UTC)",
            "from mx-prod-mc-06.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-643-BNFy9erVM5qgrh92WM6o0g-1; Thu,\n 02 Apr 2026 04:25:13 -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-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id 9731C180035C\n for <dev@openvswitch.org>; Thu,  2 Apr 2026 08:25:12 +0000 (UTC)",
            "from amusil.brq.redhat.com (unknown [10.43.17.233])\n by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id 9268630002D2; Thu,  2 Apr 2026 08:25:11 +0000 (UTC)"
        ],
        "X-Virus-Scanned": [
            "amavis at osuosl.org",
            "amavis at osuosl.org"
        ],
        "X-Comment": "SPF check N/A for local connections - client-ip=140.211.9.56;\n helo=lists.linuxfoundation.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=<UNKNOWN> ",
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 smtp3.osuosl.org 1939760672",
            "OpenDKIM Filter v2.11.0 smtp4.osuosl.org F1D44405CB"
        ],
        "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=170.10.129.124;\n helo=us-smtp-delivery-124.mimecast.com; envelope-from=amusil@redhat.com;\n receiver=<UNKNOWN>",
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp4.osuosl.org F1D44405CB",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1775118315;\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 bh=35a3c+pbrls1AjibT5nariPerClLe+LWzhNXIeai+Gk=;\n b=D3gI0wr9nLQPnz04A9aFRXJchLEi9iV/7x+SK4QCrzR6Bvdl61PVywMJLjuVL7ObbFEMxS\n p/OSkNLQAmCUkr5lQVbGcFLct9gvI90WhrxWTe0NB7/CN50l0Vg7OA7o3oJJADS0VBx9Ls\n SwcQ1HhfYib+VLSBpWig6PvQsziYabA=",
        "X-MC-Unique": "BNFy9erVM5qgrh92WM6o0g-1",
        "X-Mimecast-MFC-AGG-ID": "BNFy9erVM5qgrh92WM6o0g_1775118312",
        "To": "dev@openvswitch.org",
        "Date": "Thu,  2 Apr 2026 10:25:04 +0200",
        "Message-ID": "<20260402082510.1417440-1-amusil@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": "xA-dJc7ECiIol3xi0ySh7S48eBVzIbmzIX2uoeR1cUk_1775118312",
        "X-Mimecast-Originator": "redhat.com",
        "Subject": "[ovs-dev] [PATCH ovn 0/6] Netlink notifier consolidation and\n nexthop table support",
        "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": "Ales Musil via dev <ovs-dev@openvswitch.org>",
        "Reply-To": "Ales Musil <amusil@redhat.com>",
        "Cc": "dceara@redhat.com",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "base64",
        "Errors-To": "ovs-dev-bounces@openvswitch.org",
        "Sender": "\"dev\" <ovs-dev-bounces@openvswitch.org>"
    },
    "content": "This series lays the groundwork for EVPN active-active multihoming\nsupport in OVN by adding the ability to sync the kernel nexthop table\nand consolidating the existing netlink notification infrastructure.\n\nThe first two patches are small fixes — a missing destroy call for\nneighbor table notifications and a memory leak in route data during\nchange checks.\n\nThe core of the series is the consolidation of the netlink notifiers.\nThe neighbor and route table notifiers shared a lot of nearly\nidentical code; this is extracted into a common ovn-netlink-notifier\nmodule that allows defining listeners with their specific data. This\nmakes it straightforward to add new notifiers and opens the door\nfor incremental processing instead of full recomputes on every\nchange.\n\nBuilding on the consolidated notifier, the final patch adds support\nfor syncing the nexthop table from netlink. The nexthop table\ncontains entries about individual nexthops and nexthop groups, which\nare used by EVPN when remote VTEPs are configured with active-active\nmultihoming. This data will be used in subsequent work to configure\nmultihoming for OVN EVPN.\n\nAles Musil (6):\n  controller: Add missing neighbor_table_notify_destroy call.\n  controller: Make sure we free the route_data during change check.\n  vec: Extend the vector with pop iterator and bsearch wrapper.\n  controller: Consolidate the netlink notifiers.\n  tests: Add basic test for route notifier.\n  controller: Add support for syncing the nexthop table.\n\n configure.ac                                  |   1 +\n controller/automake.mk                        |  16 +-\n controller/neighbor-exchange.c                |   4 +-\n controller/neighbor-exchange.h                |   4 +-\n controller/neighbor-table-notify.c            | 244 ---------------\n controller/neighbor-table-notify.h            |  45 ---\n ...-notify-stub.c => nexthop-exchange-stub.c} |  41 +--\n controller/nexthop-exchange.c                 | 230 ++++++++++++++\n controller/nexthop-exchange.h                 |  61 ++++\n controller/ovn-controller.c                   | 168 +++++++---\n ...ify-stub.c => ovn-netlink-notifier-stub.c} |  35 +--\n controller/ovn-netlink-notifier.c             | 294 ++++++++++++++++++\n controller/ovn-netlink-notifier.h             |  39 +++\n controller/route-exchange-netlink.h           |   1 +\n controller/route-exchange.c                   |   4 +-\n controller/route-exchange.h                   |   2 +-\n controller/route-table-notify.c               | 235 --------------\n controller/route-table-notify.h               |  44 ---\n lib/vec.h                                     |  12 +\n m4/ovn.m4                                     |  16 +\n tests/automake.mk                             |   6 +-\n tests/system-common-macros.at                 |   3 +\n tests/system-ovn-netlink.at                   | 218 +++++++++++--\n tests/test-ovn-netlink.c                      | 143 +++++++--\n 24 files changed, 1135 insertions(+), 731 deletions(-)\n delete mode 100644 controller/neighbor-table-notify.c\n delete mode 100644 controller/neighbor-table-notify.h\n rename controller/{route-table-notify-stub.c => nexthop-exchange-stub.c} (51%)\n create mode 100644 controller/nexthop-exchange.c\n create mode 100644 controller/nexthop-exchange.h\n rename controller/{neighbor-table-notify-stub.c => ovn-netlink-notifier-stub.c} (51%)\n create mode 100644 controller/ovn-netlink-notifier.c\n create mode 100644 controller/ovn-netlink-notifier.h\n delete mode 100644 controller/route-table-notify.c\n delete mode 100644 controller/route-table-notify.h"
}