Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2217788/?format=api
{ "id": 2217788, "url": "http://patchwork.ozlabs.org/api/patches/2217788/?format=api", "web_url": "http://patchwork.ozlabs.org/project/ovn/patch/9cd82a7c1b9dd6241bf4edf8cf234f3ccd531d30.1774883662.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": "<9cd82a7c1b9dd6241bf4edf8cf234f3ccd531d30.1774883662.git.lorenzo.bianconi@redhat.com>", "list_archive_url": null, "date": "2026-03-30T15:15:26", "name": "[ovs-dev,v2,branch-24.09] northd: Introduce disable_garp_rarp option for logical_router table.", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "df3a513ec3b42409d972adda4d46270bef6ca4ef", "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/9cd82a7c1b9dd6241bf4edf8cf234f3ccd531d30.1774883662.git.lorenzo.bianconi@redhat.com/mbox/", "series": [ { "id": 498050, "url": "http://patchwork.ozlabs.org/api/series/498050/?format=api", "web_url": "http://patchwork.ozlabs.org/project/ovn/list/?series=498050", "date": "2026-03-30T15:15:26", "name": "[ovs-dev,v2,branch-24.09] northd: Introduce disable_garp_rarp option for logical_router table.", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/498050/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2217788/comments/", "check": "fail", "checks": "http://patchwork.ozlabs.org/api/patches/2217788/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=jT7yNXuu;\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=jT7yNXuu", "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 4fkvvq29xqz1y1q\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 31 Mar 2026 02:15:51 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id E914F40712;\n\tMon, 30 Mar 2026 15:15:49 +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 gnnVvFPdzAng; Mon, 30 Mar 2026 15:15:48 +0000 (UTC)", "from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56])\n\tby smtp4.osuosl.org (Postfix) with ESMTPS id B50614015C;\n\tMon, 30 Mar 2026 15:15:48 +0000 (UTC)", "from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id 8B280C054B;\n\tMon, 30 Mar 2026 15:15:48 +0000 (UTC)", "from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n by lists.linuxfoundation.org (Postfix) with ESMTP id EADD4C0549\n for <ovs-dev@openvswitch.org>; Mon, 30 Mar 2026 15:15:47 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp4.osuosl.org (Postfix) with ESMTP id 2086D40624\n for <ovs-dev@openvswitch.org>; Mon, 30 Mar 2026 15:15:38 +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 gKkgfBbZBvUQ for <ovs-dev@openvswitch.org>;\n Mon, 30 Mar 2026 15:15:37 +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 C089940372\n for <ovs-dev@openvswitch.org>; Mon, 30 Mar 2026 15:15:36 +0000 (UTC)", "from mail-wr1-f71.google.com (mail-wr1-f71.google.com\n [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-167-nMN8E10PP5iYJYosI5XtEw-1; Mon, 30 Mar 2026 11:15:32 -0400", "by mail-wr1-f71.google.com with SMTP id\n ffacd0b85a97d-43d022974acso872676f8f.2\n for <ovs-dev@openvswitch.org>; Mon, 30 Mar 2026 08:15:32 -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 ffacd0b85a97d-43cf21e2727sm21654728f8f.2.2026.03.30.08.15.28\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Mon, 30 Mar 2026 08:15:29 -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 smtp4.osuosl.org B50614015C", "OpenDKIM Filter v2.11.0 smtp4.osuosl.org C089940372" ], "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 smtp4.osuosl.org C089940372", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1774883735;\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=+ShavapEVNQ4HM+l2mIfFYYaikZ3QiERq16ZDAa8CJY=;\n b=jT7yNXuuYc30g2z0EQ2HR3i/Ls6iiBiJpc9RVB3SHzcrzcq65Oj6/8A5uRUOVtuC5jpmVv\n Urn44crGcXOsUtdiv8e/r1HubXFulcyOu2LCfeOwl2WDaVyk6qS9Vhh+pNoYOr/Zkdae17\n cFldgclvu9RKifz4jyxAxEXcKLvsXhU=", "X-MC-Unique": "nMN8E10PP5iYJYosI5XtEw-1", "X-Mimecast-MFC-AGG-ID": "nMN8E10PP5iYJYosI5XtEw_1774883731", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1774883731; x=1775488531;\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=+ShavapEVNQ4HM+l2mIfFYYaikZ3QiERq16ZDAa8CJY=;\n b=dfX1aGnTxQacvFxD9QJGlFhknngpHWet6LmfbtmicQl68UL8ohiW5Kzpf2Dr7qDQAN\n 4IQNs8eVvgHtsPkUZYAyyAi7JpJcw/X3Rqk99JYpZFZaFAeaUGAIieK/PEJgXRkQ7jlP\n IuVqiZ1Z5b1KbsJCO1CY5vZe4IjUApyEvIQHVCmOdQvB+Cq5MCUYXLQhsFF3/PeG64Ws\n ddmK0bO1EueBcZq0NBK6S1xfJDWDe+Y4+/i7M9e1Ed1sRJbAN6SbkBdoLV7UoQNbLhRr\n bpBbh/Mv6K9X+SDKna+nvvYEfSbe7sNN4gpVRghb43ZNlBGGpAQhM+bDEDWwhUyryGc8\n GH2A==", "X-Gm-Message-State": "AOJu0Yz4FUJwSRO6SySIhHflEnaCBUHeSGCdHOI3lmTMFIamZeWPoD4G\n ryJdCwC2+3wGysTA+gcyVjpJPyziZYPs62mDWIxiGD0XAGG4waiyR7b1qxZuiZNpo9qHubV3qz1\n 948rpGW5cpEQutqLkAHk6F2ooWvEMVVbUCA2rD0uzS31uVYmkT/e0K0XgASPILo+ljKwr8/MfU3\n vZUvuNlhwEJKZXI1vjd+R56Vn8F8vCZ9GtU5Z+cmlqt9QPKHDf3DbVgA==", "X-Gm-Gg": "ATEYQzyLjdV1Eb+vtWpktuoOgookbu7bYsU4HVX8BqW1BlGBZ8vEzxE2duV1YuCDMgR\n CcaW/TM8E00RoE02WO/2NO2TXtytUk4xHHvmQwkQFhVspGxDeaIhhVDV3TMfK7Dfkp2PZ4z92gG\n Z/BypHNiE1ze784vmAsOJAJ8OUVCNyKGKFh+1UBnpr6Pf7ulN9FGlfcrjdXrAzBDASlW6Htlkk6\n fJ31+AX75VRypTxVPQp0lBWdFRgQp8cmXbyNjmBfzRJlMkLExBcXoLInvsqwN0N13U1M0AfO/5j\n KOamSmJ84zeYXYn7UDHxllMvw5V9AxQTDyuwQaah/RnKLuV226h4DIJTyIm/jtHaQZPpWzWVIwo\n HwfkPNyG0uQAbj2c4OIaDFWEYSaPZAMMvmM0aUb6EKQb2pbV+ZnJFRtde+Bk+pOnvQELUvw==", "X-Received": [ "by 2002:a05:6000:25c7:b0:43c:f95c:3e70 with SMTP id\n ffacd0b85a97d-43cf95c3f86mr10590181f8f.25.1774883730392;\n Mon, 30 Mar 2026 08:15:30 -0700 (PDT)", "by 2002:a05:6000:25c7:b0:43c:f95c:3e70 with SMTP id\n ffacd0b85a97d-43cf95c3f86mr10590071f8f.25.1774883729698;\n Mon, 30 Mar 2026 08:15:29 -0700 (PDT)" ], "To": "ovs-dev@openvswitch.org", "Date": "Mon, 30 Mar 2026 17:15:26 +0200", "Message-ID": "\n <9cd82a7c1b9dd6241bf4edf8cf234f3ccd531d30.1774883662.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": "wWLQqxM-9pOOkuDitq87_kDoaYXdBSJaAxB2WPvGLJ8_1774883731", "X-Mimecast-Originator": "redhat.com", "Subject": "[ovs-dev] [PATCH v2 ovn branch-24.09] 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.09.\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 407cc4bb0..5a8248fe6 100644\n--- a/NEWS\n+++ b/NEWS\n@@ -12,6 +12,8 @@ OVN v24.09.4 - 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.09.3 - 13 Jun 2025\n --------------------------\ndiff --git a/controller/pinctrl.c b/controller/pinctrl.c\nindex c5f390dce..aec7dc228 100644\n--- a/controller/pinctrl.c\n+++ b/controller/pinctrl.c\n@@ -4977,6 +4977,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@@ -5050,6 +5052,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@@ -5093,6 +5096,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@@ -5124,6 +5128,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@@ -5151,6 +5156,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@@ -6598,6 +6604,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@@ -6644,10 +6672,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@@ -6655,7 +6681,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 && !smap_get_bool(&pb->options, \"disable_garp_rarp\", false)) {\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@@ -6668,7 +6694,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 && !smap_get_bool(&pb->options, \"disable_garp_rarp\", false)) {\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@@ -6677,6 +6703,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 0a03d963a..bcb25685f 100644\n--- a/northd/northd.c\n+++ b/northd/northd.c\n@@ -827,6 +827,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 edffe6409..ec7e9587a 100644\n--- a/ovn-nb.xml\n+++ b/ovn-nb.xml\n@@ -3020,6 +3020,15 @@ or\n option is not present the limit is not set and the zone limit is\n derived from OvS default datapath limit.\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 2c96608f9..b042acd43 100644\n--- a/tests/ovn.at\n+++ b/tests/ovn.at\n@@ -41580,3 +41580,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.09" ] }