Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2217791/?format=api
{ "id": 2217791, "url": "http://patchwork.ozlabs.org/api/patches/2217791/?format=api", "web_url": "http://patchwork.ozlabs.org/project/ovn/patch/8a956c2325f804dd6b20d4d513d86ba36f980700.1774883994.git.lorenzo.bianconi@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": "<8a956c2325f804dd6b20d4d513d86ba36f980700.1774883994.git.lorenzo.bianconi@redhat.com>", "list_archive_url": null, "date": "2026-03-30T15:20:51", "name": "[ovs-dev,v2,branch-24.03] northd: Introduce disable_garp_rarp option for logical_router table.", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "6a809f2d6d6e9b8fca92ea45bba5d0f99d37a97b", "submitter": { "id": 73083, "url": "http://patchwork.ozlabs.org/api/people/73083/?format=api", "name": "Lorenzo Bianconi", "email": "lorenzo.bianconi@redhat.com" }, "delegate": { "id": 94943, "url": "http://patchwork.ozlabs.org/api/users/94943/?format=api", "username": "dceara", "first_name": "Dumitru", "last_name": "Ceara", "email": "dceara@redhat.com" }, "mbox": "http://patchwork.ozlabs.org/project/ovn/patch/8a956c2325f804dd6b20d4d513d86ba36f980700.1774883994.git.lorenzo.bianconi@redhat.com/mbox/", "series": [ { "id": 498053, "url": "http://patchwork.ozlabs.org/api/series/498053/?format=api", "web_url": "http://patchwork.ozlabs.org/project/ovn/list/?series=498053", "date": "2026-03-30T15:20:51", "name": "[ovs-dev,v2,branch-24.03] northd: Introduce disable_garp_rarp option for logical_router table.", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/498053/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2217791/comments/", "check": "fail", "checks": "http://patchwork.ozlabs.org/api/patches/2217791/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<ovs-dev-bounces@openvswitch.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "ovs-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=Ejjogm/y;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org\n (client-ip=2605:bc80:3010::133; helo=smtp2.osuosl.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org)", "smtp2.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=Ejjogm/y", "smtp2.osuosl.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com" ], "Received": [ "from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133])\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 4fkw1r6Htqz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 31 Mar 2026 02:21:04 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby smtp2.osuosl.org (Postfix) with ESMTP id 3D7344049A;\n\tMon, 30 Mar 2026 15:21:03 +0000 (UTC)", "from smtp2.osuosl.org ([127.0.0.1])\n by localhost (smtp2.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id 02gmLc4kv9Mf; Mon, 30 Mar 2026 15:21:02 +0000 (UTC)", "from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56])\n\tby smtp2.osuosl.org (Postfix) with ESMTPS id 10EF74049E;\n\tMon, 30 Mar 2026 15:21:02 +0000 (UTC)", "from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id DF079C054A;\n\tMon, 30 Mar 2026 15:21:01 +0000 (UTC)", "from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133])\n by lists.linuxfoundation.org (Postfix) with ESMTP id 248B8C0549\n for <ovs-dev@openvswitch.org>; Mon, 30 Mar 2026 15:21:01 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp2.osuosl.org (Postfix) with ESMTP id 09C574049E\n for <ovs-dev@openvswitch.org>; Mon, 30 Mar 2026 15:21:01 +0000 (UTC)", "from smtp2.osuosl.org ([127.0.0.1])\n by localhost (smtp2.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id kE15ptgjCVL3 for <ovs-dev@openvswitch.org>;\n Mon, 30 Mar 2026 15:21:00 +0000 (UTC)", "from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n by smtp2.osuosl.org (Postfix) with ESMTPS id BB7FF4049A\n for <ovs-dev@openvswitch.org>; Mon, 30 Mar 2026 15:20:59 +0000 (UTC)", "from mail-wm1-f69.google.com (mail-wm1-f69.google.com\n [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-157-KCg9DBxlNfSBOgOemibKWw-1; Mon, 30 Mar 2026 11:20:56 -0400", "by mail-wm1-f69.google.com with SMTP id\n 5b1f17b1804b1-4871faccd95so24279885e9.1\n for <ovs-dev@openvswitch.org>; Mon, 30 Mar 2026 08:20:56 -0700 (PDT)", "from localhost (net-37-119-153-93.cust.vodafonedsl.it.\n [37.119.153.93]) by smtp.gmail.com with ESMTPSA id\n 5b1f17b1804b1-48725eae727sm143926755e9.2.2026.03.30.08.20.53\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Mon, 30 Mar 2026 08:20:53 -0700 (PDT)" ], "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 smtp2.osuosl.org 10EF74049E", "OpenDKIM Filter v2.11.0 smtp2.osuosl.org BB7FF4049A" ], "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=170.10.129.124;\n helo=us-smtp-delivery-124.mimecast.com;\n envelope-from=lorenzo.bianconi@redhat.com; receiver=<UNKNOWN>", "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp2.osuosl.org BB7FF4049A", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1774884058;\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=KzhUaIjQO2JO75aLuvth3/Dy2tTY0l3ApZ5vpvVD6kc=;\n b=Ejjogm/y9EYDBfjowNgYcxvcX8eWqsdcvLHZ1Qpn2F7BUM+v1OFynbNsvi3O/cAFfx5/nc\n bqcs6OGRDsERsKWdQ3tDgN9ClXbnpw00FiZYNZMl9jhCagxl1jzuTOWlF+9+cLqxWuxUQI\n tSuU2b/iU6K7XNZ34HhGOiAY4KQkbp8=", "X-MC-Unique": "KCg9DBxlNfSBOgOemibKWw-1", "X-Mimecast-MFC-AGG-ID": "KCg9DBxlNfSBOgOemibKWw_1774884055", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1774884055; x=1775488855;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=KzhUaIjQO2JO75aLuvth3/Dy2tTY0l3ApZ5vpvVD6kc=;\n b=oTeLHoxN9GspgTWYGdaiRQnbWFsQXtlNVt/eBl73zQ90TtbOf4vFXlk4cHZYsh7GCG\n eEyoKlAKlE9j7tbVgRy7tjiHfZu1iDAsA4pCsZXZAR8PBAYkugJgnlV1S6K60FuLhapz\n BfpMnlb6K4fFiZosTLMBl+t5sMZgxeQQmIxHsMoLkUqdVGgoHSKUaaig5BTi9bcVoGYC\n mamJT8aJ0bTvK6iYcxKRCqu5cdStULCi1rN1qK9uD57rQjRwqVhyOskhc1i0TBbN+lxC\n pSDDHBR1red60j8Rp2i2hlbzc50op3Jex7yJ+Pm7HwnD+vz/z+adtfAV8W3vCbK9SEtJ\n xJPw==", "X-Gm-Message-State": "AOJu0Yz52Si1a2Q/qkrD/08dyrEly4ZCzUFdZr9PF0F/FIOAYmEKwGFF\n 2Jbhv9QHjpWCmyY4Z2AqLn+PlwXWAaSqZEcN1/dQHGlmGxOBpdnmk0jwwELMjrvwBDzwXtKBu9B\n gS2Z8z7w1dNWEXHYf/0CeTYmXRlYjtEqvSNjPB3/jURxiVSALtDGU6cMNh3zyWOyGr4Phpsx9Ik\n 0vC4wK1xPWWiYaaunA4LzMydgw3ceXN5aOhkqAGJYW8dtSMA+or9dJiw==", "X-Gm-Gg": "ATEYQzywndNsOPuZbSt0khaomwOFQUpx3p1O4QL6+v+uVf3dyR4zsW4rudH5xcX0ifi\n J1KM//GSrjLHR+Myx9D6RgY2+dj/FiMr8y36W7uzZ61ZhbTswN/R3Sxqc5ztv76kabkrdnzv67a\n IU8Hx5YMzo3wEqWSdrKKfZ9BdpsgI1JEtdh05CG89vlC0RudvzFyGN9xip0vHf9DQuXwDkMnu6a\n elazGP86G23H5mIdIFt/W6yZPSZLuUAi71YIH7hVOJ0rdHUnyfh3l27vxQMzdpj62Vt9a2I0u3g\n Vtrb8ATWMprrvIKTDET84CP94G+ZDX+KDB0kDeg4FNHDj7/BxPD8MXcuhbjiQkWpqqvAlm81+Ac\n re2rD+oZrg61Zt+LcwUUT8Jv12aUKS8l99v1X2Y2FC051yZp1hgNi6Cg2FKX2woOCqzc4oA==", "X-Received": [ "by 2002:a05:600c:4e0b:b0:485:fbd2:f72 with SMTP id\n 5b1f17b1804b1-487290a9254mr193536265e9.1.1774884054470;\n Mon, 30 Mar 2026 08:20:54 -0700 (PDT)", "by 2002:a05:600c:4e0b:b0:485:fbd2:f72 with SMTP id\n 5b1f17b1804b1-487290a9254mr193535665e9.1.1774884053846;\n Mon, 30 Mar 2026 08:20:53 -0700 (PDT)" ], "To": "ovs-dev@openvswitch.org", "Date": "Mon, 30 Mar 2026 17:20:51 +0200", "Message-ID": "\n <8a956c2325f804dd6b20d4d513d86ba36f980700.1774883994.git.lorenzo.bianconi@redhat.com>", "X-Mailer": "git-send-email 2.53.0", "MIME-Version": "1.0", "X-Mimecast-Spam-Score": "0", "X-Mimecast-MFC-PROC-ID": "YA9iW82ez43qqk-0lSY3sFjQ3q_B4J_rILB914k5tMc_1774884055", "X-Mimecast-Originator": "redhat.com", "Subject": "[ovs-dev] [PATCH v2 ovn branch-24.03] northd: Introduce\n disable_garp_rarp option for logical_router table.", "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": "Lorenzo Bianconi via dev <ovs-dev@openvswitch.org>", "Reply-To": "Lorenzo Bianconi <lorenzo.bianconi@redhat.com>", "Cc": "dceara@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": "Introduce disable_garp_rarp option in the Logical_Router table in order\nto disable GARP/RARP announcements by all the peer ports of this logical\nrouter.\nPlease note this is a patch specific for ovn branch-24.03.\n\nReported-at: https://issues.redhat.com/browse/FDP-1537\nSigned-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>\n---\n NEWS | 2 +\n controller/pinctrl.c | 45 ++++++++++++++++++---\n northd/northd.c | 5 +++\n ovn-nb.xml | 9 +++++\n tests/ovn.at | 94 ++++++++++++++++++++++++++++++++++++++++++++\n 5 files changed, 149 insertions(+), 6 deletions(-)", "diff": "diff --git a/NEWS b/NEWS\nindex c11932310..645b70c55 100644\n--- a/NEWS\n+++ b/NEWS\n@@ -8,6 +8,8 @@ OVN v24.03.8 - xx xxx xxxx\n based L4 field translation for stateful ACLs. When enabled allows proper\n handling of IP fragmentation in userspace datapaths. This option may break\n hardware offloading and is disabled by default.\n+ - Added disable_garp_rarp option to logical_router table in order to disable\n+ GARP/RARP announcements by all the peer ports of this logical router.\n \n OVN v24.03.7 - 18 Nov 2025\n --------------------------\ndiff --git a/controller/pinctrl.c b/controller/pinctrl.c\nindex f987fd0e3..9717171f5 100644\n--- a/controller/pinctrl.c\n+++ b/controller/pinctrl.c\n@@ -4562,6 +4562,8 @@ struct garp_rarp_data {\n uint32_t dp_key; /* Datapath used to output this GARP. */\n uint32_t port_key; /* Port to inject the GARP into. */\n char *logical_port; /* Name of the cr logical_port, if any */\n+ bool stale; /* Used during sync to remove stale\n+ * information. */\n };\n \n /* Contains GARPs/RARPs to be sent. Protected by pinctrl_mutex*/\n@@ -4635,6 +4637,7 @@ add_garp_rarp(const char *name, const struct eth_addr ea, ovs_be32 ip,\n garp_rarp->backoff = 1000; /* msec. */\n garp_rarp->dp_key = dp_key;\n garp_rarp->port_key = port_key;\n+ garp_rarp->stale = false;\n garp_rarp->logical_port = nullable_xstrdup(logical_port);\n shash_add(&send_garp_rarp_data, name, garp_rarp);\n \n@@ -4678,6 +4681,7 @@ send_garp_rarp_update(struct ovsdb_idl_txn *ovnsb_idl_txn,\n if (garp_rarp) {\n garp_rarp->dp_key = binding_rec->datapath->tunnel_key;\n garp_rarp->port_key = binding_rec->tunnel_key;\n+ garp_rarp->stale = false;\n if (garp_max_timeout != garp_rarp_max_timeout ||\n garp_continuous != garp_rarp_continuous) {\n /* reset backoff */\n@@ -4709,6 +4713,7 @@ send_garp_rarp_update(struct ovsdb_idl_txn *ovnsb_idl_txn,\n if (garp_rarp) {\n garp_rarp->dp_key = binding_rec->datapath->tunnel_key;\n garp_rarp->port_key = binding_rec->tunnel_key;\n+ garp_rarp->stale = false;\n if (garp_max_timeout != garp_rarp_max_timeout ||\n garp_continuous != garp_rarp_continuous) {\n /* reset backoff */\n@@ -4736,6 +4741,7 @@ send_garp_rarp_update(struct ovsdb_idl_txn *ovnsb_idl_txn,\n if (garp_rarp) {\n garp_rarp->dp_key = binding_rec->datapath->tunnel_key;\n garp_rarp->port_key = binding_rec->tunnel_key;\n+ garp_rarp->stale = false;\n if (garp_max_timeout != garp_rarp_max_timeout ||\n garp_continuous != garp_rarp_continuous) {\n /* reset backoff */\n@@ -6183,6 +6189,28 @@ send_garp_rarp_run(struct rconn *swconn, long long int *send_garp_rarp_time)\n }\n }\n \n+static bool\n+garp_rarp_is_enabled(struct ovsdb_idl_index *sbrec_port_binding_by_name,\n+ const struct sbrec_port_binding *pb)\n+{\n+ if (smap_get_bool(&pb->options, \"disable_garp_rarp\", false)) {\n+ return false;\n+ }\n+\n+ /* Check if GARP probing is disabled on the peer logical router. */\n+ const struct sbrec_port_binding *peer = lport_get_peer(\n+ pb, sbrec_port_binding_by_name);\n+ if (!peer) {\n+ peer = lport_get_l3gw_peer(pb, sbrec_port_binding_by_name);\n+ }\n+ if (peer && smap_get_bool(&peer->datapath->external_ids,\n+ \"disable_garp_rarp\", false)) {\n+ return false;\n+ }\n+\n+ return true;\n+}\n+\n /* Called by pinctrl_run(). Runs with in the main ovn-controller\n * thread context. */\n static void\n@@ -6229,10 +6257,8 @@ send_garp_rarp_prepare(struct ovsdb_idl_txn *ovnsb_idl_txn,\n * send_garp_rarp_data. */\n struct shash_node *iter;\n SHASH_FOR_EACH_SAFE (iter, &send_garp_rarp_data) {\n- if (!sset_contains(&localnet_vifs, iter->name) &&\n- !sset_contains(&nat_ip_keys, iter->name)) {\n- send_garp_rarp_delete(iter->name);\n- }\n+ struct garp_rarp_data *garp_rarp = iter->data;\n+ garp_rarp->stale = true;\n }\n \n /* Update send_garp_rarp_data. */\n@@ -6240,7 +6266,7 @@ send_garp_rarp_prepare(struct ovsdb_idl_txn *ovnsb_idl_txn,\n SSET_FOR_EACH (iface_id, &localnet_vifs) {\n const struct sbrec_port_binding *pb = lport_lookup_by_name(\n sbrec_port_binding_by_name, iface_id);\n- if (pb) {\n+ if (pb && garp_rarp_is_enabled(sbrec_port_binding_by_name, pb)) {\n send_garp_rarp_update(ovnsb_idl_txn,\n sbrec_mac_binding_by_lport_ip,\n local_datapaths, pb, &nat_addresses,\n@@ -6253,7 +6279,7 @@ send_garp_rarp_prepare(struct ovsdb_idl_txn *ovnsb_idl_txn,\n SSET_FOR_EACH (gw_port, &local_l3gw_ports) {\n const struct sbrec_port_binding *pb\n = lport_lookup_by_name(sbrec_port_binding_by_name, gw_port);\n- if (pb) {\n+ if (pb && garp_rarp_is_enabled(sbrec_port_binding_by_name, pb)) {\n send_garp_rarp_update(ovnsb_idl_txn, sbrec_mac_binding_by_lport_ip,\n local_datapaths, pb, &nat_addresses,\n garp_max_timeout, garp_continuous);\n@@ -6262,6 +6288,13 @@ send_garp_rarp_prepare(struct ovsdb_idl_txn *ovnsb_idl_txn,\n \n /* pinctrl_handler thread will send the GARPs. */\n \n+ SHASH_FOR_EACH_SAFE (iter, &send_garp_rarp_data) {\n+ struct garp_rarp_data *garp_rarp = iter->data;\n+ if (garp_rarp->stale) {\n+ send_garp_rarp_delete(iter->name);\n+ }\n+ }\n+\n sset_destroy(&localnet_vifs);\n sset_destroy(&local_l3gw_ports);\n \ndiff --git a/northd/northd.c b/northd/northd.c\nindex 1d36d121f..377e76e52 100644\n--- a/northd/northd.c\n+++ b/northd/northd.c\n@@ -789,6 +789,11 @@ ovn_datapath_update_external_ids(struct ovn_datapath *od)\n smap_add_format(&ids, \"mac_binding_age_threshold\",\n \"%u\", age_threshold);\n }\n+\n+ bool disable_garp_rarp = smap_get_bool(&od->nbr->options,\n+ \"disable_garp_rarp\", false);\n+ smap_add_format(&ids, \"disable_garp_rarp\",\n+ disable_garp_rarp ? \"true\" : \"false\");\n }\n \n sbrec_datapath_binding_set_external_ids(od->sb, &ids);\ndiff --git a/ovn-nb.xml b/ovn-nb.xml\nindex 38245162f..203ff991d 100644\n--- a/ovn-nb.xml\n+++ b/ovn-nb.xml\n@@ -2844,6 +2844,15 @@ or\n </p>\n \n </column>\n+\n+ <column name=\"options\" key=\"disable_garp_rarp\"\n+ type='{\"type\": \"boolean\"}'>\n+ <p>\n+ If set to <code>true</code>, GARP and RARP announcements are not\n+ sent by all the VIF peer ports of this logical router.\n+ The default value is <code>false</code>.\n+ </p>\n+ </column>\n </group>\n \n <group title=\"Common Columns\">\ndiff --git a/tests/ovn.at b/tests/ovn.at\nindex dd77bcdef..ff0b225e8 100644\n--- a/tests/ovn.at\n+++ b/tests/ovn.at\n@@ -40800,3 +40800,97 @@ AT_CHECK([ovs-ofctl dump-flows br-int table=$acl_in_eval | grep -q \"tp_dst=80\"],\n OVN_CLEANUP([hv1])\n AT_CLEANUP\n ])\n+\n+OVN_FOR_EACH_NORTHD([\n+AT_SETUP([Disabling RARP/GARP announcements from Router options])\n+AT_SKIP_IF([test $HAVE_SCAPY = no])\n+ovn_start\n+\n+net_add n1\n+\n+sim_add hv1\n+as hv1\n+ovs-vsctl add-br br-phys\n+ovs-vsctl set open . external-ids:ovn-bridge-mappings=phys:br-phys\n+ovn_attach n1 br-phys 192.168.0.1\n+\n+check ovs-vsctl add-port br-phys snoopvif -- set Interface snoopvif options:tx_pcap=hv1/snoopvif-tx.pcap options:rxq_pcap=hv1/snoopvif-rx.pcap\n+check ovs-vsctl add-port br-int vif1 -- set Interface vif1 external-ids:iface-id=lsp1\n+check ovs-vsctl add-port br-int vif2 -- set Interface vif2 external-ids:iface-id=lsp2\n+\n+check ovs-vsctl set Open_vSwitch . external-ids:garp-max-timeout-sec=1\n+\n+check ovn-nbctl ls-add ls1\n+check ovn-nbctl lsp-add ls1 ln1\n+check ovn-nbctl lsp-set-addresses ln1 unknown\n+check ovn-nbctl lsp-set-type ln1 localnet\n+check ovn-nbctl lsp-set-options ln1 network_name=phys\n+check ovn-nbctl lsp-add ls1 lsp1\n+check ovn-nbctl lsp-set-addresses lsp1 \"00:00:00:00:00:12 192.168.1.2\"\n+check ovn-nbctl --wait=hv sync\n+\n+check ovn-nbctl ls-add ls2\n+check ovn-nbctl lsp-add ls2 lsp2\n+check ovn-nbctl lsp-set-addresses lsp2 \"00:00:00:00:00:13 10.0.0.2\"\n+check ovn-nbctl --wait=hv sync\n+\n+check ovn-nbctl lr-add lr1\n+check ovn-nbctl set Logical_Router lr1 options:disable_garp_rarp=\"true\"\n+check ovn-nbctl lrp-add lr1 lrp1 00:00:00:00:00:11 192.168.1.1/24\n+check ovn-nbctl lrp-add lr1 lrp2 00:00:00:00:00:14 10.0.0.1/24\n+check ovn-nbctl lsp-add ls1 ls-lrp1 \\\n+ -- set Logical_Switch_Port ls-lrp1 type=router \\\n+ options:router-port=lrp1 addresses=\\\"00:00:00:00:00:11\\\"\n+check ovn-nbctl lsp-add ls2 ls-lrp2 \\\n+ -- set Logical_Switch_Port ls-lrp2 type=router \\\n+ options:router-port=lrp2 addresses=\\\"00:00:00:00:00:14\\\"\n+check ovn-nbctl lsp-set-options ls-lrp1 router-port=lrp1 nat-addresses=\"router\"\n+check ovn-nbctl lr-nat-add lr1 snat 192.168.1.10 10.0.0.0/24\n+check ovn-nbctl lrp-set-gateway-chassis lrp1 hv1\n+check ovn-nbctl --wait=hv sync\n+\n+wait_for_ports_up\n+\n+garp_lrp=$(fmt_pkt \"Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:11')/ \\\n+ ARP(hwsrc='00:00:00:00:00:11', psrc='192.168.1.1', pdst='192.168.1.1')\")\n+garp_vif=$(fmt_pkt \"Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:12')/ \\\n+ ARP(hwsrc='00:00:00:00:00:12', psrc='192.168.1.2', pdst='192.168.1.2')\")\n+garp_nat=$(fmt_pkt \"Ether(dst='ff:ff:ff:ff:ff:ff', src='00:00:00:00:00:11')/ \\\n+ ARP(hwsrc='00:00:00:00:00:11', psrc='192.168.1.10', pdst='192.168.1.10')\")\n+# GARP packet for vif\n+echo $garp_vif > expected\n+OVN_CHECK_PACKETS_UNIQ([hv1/snoopvif-tx.pcap], [expected])\n+$PYTHON \"$ovs_srcdir/utilities/ovs-pcap.in\" hv1/snoopvif-tx.pcap > hv1/snoopvif-tx.packets\n+AT_CHECK([grep -q \"$garp_lrp\" hv1/snoopvif-tx.packets], [1])\n+AT_CHECK([grep -q \"$garp_nat\" hv1/snoopvif-tx.packets], [1])\n+\n+# GARP packet for lrp\n+echo $garp_lrp >> expected\n+echo $garp_nat >> expected\n+check ovn-nbctl --wait=hv set Logical_Router lr1 options:disable_garp_rarp=\"false\"\n+OVN_CHECK_PACKETS_UNIQ([hv1/snoopvif-tx.pcap], [expected])\n+\n+# Check for GW router\n+check ovn-nbctl lrp-del-gateway-chassis lrp1 hv1\n+check ovn-nbctl set Logical_Router lr1 options:chassis=\"hv1\"\n+check ovn-nbctl set Logical_Router lr1 options:disable_garp_rarp=\"true\"\n+check ovn-nbctl --wait=hv sync\n+\n+sleep_controller hv1\n+reset_pcap_file snoopvif hv1/snoopvif\n+wake_up_controller hv1\n+\n+echo $garp_vif > expected\n+OVN_CHECK_PACKETS_UNIQ([hv1/snoopvif-tx.pcap], [expected])\n+$PYTHON \"$ovs_srcdir/utilities/ovs-pcap.in\" hv1/snoopvif-tx.pcap > hv1/snoopvif-tx.packets\n+AT_CHECK([grep -q \"$garp_lrp\" hv1/snoopvif-tx.packets], [1])\n+AT_CHECK([grep -q \"$garp_nat\" hv1/snoopvif-tx.packets], [1])\n+\n+echo $garp_lrp >> expected\n+echo $garp_nat >> expected\n+check ovn-nbctl set Logical_Router lr1 options:disable_garp_rarp=\"false\"\n+check ovn-nbctl --wait=hv sync\n+OVN_CHECK_PACKETS_UNIQ([hv1/snoopvif-tx.pcap], [expected])\n+\n+AT_CLEANUP\n+])\n", "prefixes": [ "ovs-dev", "v2", "branch-24.03" ] }