Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2229775/?format=api
{ "id": 2229775, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2229775/?format=api", "web_url": "http://patchwork.ozlabs.org/project/ovn/patch/20260428174509.145440-2-mmichels@redhat.com/", "project": { "id": 68, "url": "http://patchwork.ozlabs.org/api/1.1/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": "" }, "msgid": "<20260428174509.145440-2-mmichels@redhat.com>", "date": "2026-04-28T17:45:01", "name": "[ovs-dev,1/5] ovn-nbctl: Fix documentation and usage output for all commands.", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "812c914b2a0b8e2d2cf4757e17b423d6918cf82c", "submitter": { "id": 71978, "url": "http://patchwork.ozlabs.org/api/1.1/people/71978/?format=api", "name": "Mark Michelson", "email": "mmichels@redhat.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/ovn/patch/20260428174509.145440-2-mmichels@redhat.com/mbox/", "series": [ { "id": 501914, "url": "http://patchwork.ozlabs.org/api/1.1/series/501914/?format=api", "web_url": "http://patchwork.ozlabs.org/project/ovn/list/?series=501914", "date": "2026-04-28T17:45:02", "name": "Fix up northd documentation.", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/501914/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2229775/comments/", "check": "fail", "checks": "http://patchwork.ozlabs.org/api/patches/2229775/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=giHFgBsE;\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=giHFgBsE", "smtp2.osuosl.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com", "smtp2.osuosl.org; dkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=giHFgBsE" ], "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 4g4ns34y35z1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 29 Apr 2026 03:45:27 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id 1DDBA41EAC;\n\tTue, 28 Apr 2026 17:45:26 +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 BTfgQ9vmNt0P; Tue, 28 Apr 2026 17:45:20 +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 19C494068F;\n\tTue, 28 Apr 2026 17:45:20 +0000 (UTC)", "from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id B911FC058F;\n\tTue, 28 Apr 2026 17:45:19 +0000 (UTC)", "from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133])\n by lists.linuxfoundation.org (Postfix) with ESMTP id 9E4A5C04FA\n for <dev@openvswitch.org>; Tue, 28 Apr 2026 17:45:17 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp2.osuosl.org (Postfix) with ESMTP id 90602407AA\n for <dev@openvswitch.org>; Tue, 28 Apr 2026 17:45:17 +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 Yiq-k_Y3cZTI for <dev@openvswitch.org>;\n Tue, 28 Apr 2026 17:45:16 +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 F240E40639\n for <dev@openvswitch.org>; Tue, 28 Apr 2026 17:45:15 +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-81-PSNqe6zmPHCLN_bDdCEmew-1; Tue,\n 28 Apr 2026 13:45:12 -0400", "from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12])\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 0B6F818005AC\n for <dev@openvswitch.org>; Tue, 28 Apr 2026 17:45:12 +0000 (UTC)", "from localhost.localdomain.com (unknown [10.22.88.208])\n by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id 8A20619560AB\n for <dev@openvswitch.org>; Tue, 28 Apr 2026 17:45:11 +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 19C494068F", "OpenDKIM Filter v2.11.0 smtp2.osuosl.org F240E40639" ], "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=170.10.129.124;\n helo=us-smtp-delivery-124.mimecast.com; envelope-from=mmichels@redhat.com;\n receiver=<UNKNOWN>", "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp2.osuosl.org F240E40639", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1777398314;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to: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=yTWg3uRI2Zk6oSa7UAFnvQb1eu0TxTRVyxc8Qu3D1gw=;\n b=giHFgBsE7GSS0Vtbzx+5/fcNNe44k8vSRQtQOs172gkYp3jvG/KundMzFE0a9epL8f+hd6\n A7Xp/yK91Eb/4DkkHdGDre2hMxRj6h781QOx0nVCR5XOCOcawGsKuAwkx20Xo/mQpEsZCW\n D2KnDDGwIwqmRFjKdVdR6+SaFOU0zRc=", "X-MC-Unique": "PSNqe6zmPHCLN_bDdCEmew-1", "X-Mimecast-MFC-AGG-ID": "PSNqe6zmPHCLN_bDdCEmew_1777398312", "To": "dev@openvswitch.org", "Date": "Tue, 28 Apr 2026 13:45:01 -0400", "Message-ID": "<20260428174509.145440-2-mmichels@redhat.com>", "In-Reply-To": "<20260428174509.145440-1-mmichels@redhat.com>", "References": "<20260428174509.145440-1-mmichels@redhat.com>", "MIME-Version": "1.0", "X-Scanned-By": "MIMEDefang 3.0 on 10.30.177.12", "X-Mimecast-Spam-Score": "0", "X-Mimecast-MFC-PROC-ID": "EuPSaXYVIrocH8RyaRIVz5fO3cLqfS1UC2iLVQHCj0k_1777398312", "X-Mimecast-Originator": "redhat.com", "Subject": "[ovs-dev] [PATCH ovn 1/5] ovn-nbctl: Fix documentation and usage\n output for all commands.", "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": "Mark Michelson via dev <ovs-dev@openvswitch.org>", "Reply-To": "Mark Michelson <mmichels@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": "Add missing commands to the manpage: mirror-rule-add, mirror-rule-del,\nlr-nat-update-ext-ip, ha-chassis-group-set-chassis-prio,\nlsp-add-router-port, and lsp-add-localnet-port.\n\nAdd missing options to the manpage: --add-route for lb-add, --fair and\n--may-exist for meter-add, --chain and --output-port for lr-policy-add,\n--chain for lr-policy-del, and ADDRESS_FAMILY argument for lb-add.\n\nFix errors in the manpage: remove erroneous --route-table from\nlr-policy-add, add optional argument to nfg-list, update lr-policy-add\naction list to include jump.\n\nUpdate nbctl_usage() to list all available options for every command,\nmatching the command table. Fix the mirror-rule-del signature, the\ndhcp-options-get-options typo, and various formatting issues.\n\nAssisted-by: Claude Code (Claude Opus 4.6)\nSigned-off-by: Mark Michelson <mmichels@redhat.com>\n---\n NEWS | 6 ++\n utilities/ovn-nbctl.8.xml | 174 ++++++++++++++++++++++++++++++----\n utilities/ovn-nbctl.c | 191 ++++++++++++++++++++++----------------\n 3 files changed, 270 insertions(+), 101 deletions(-)", "diff": "diff --git a/NEWS b/NEWS\nindex 8633ba8bb..04f24a5ca 100644\n--- a/NEWS\n+++ b/NEWS\n@@ -1,5 +1,11 @@\n Post v26.03.0\n -------------\n+ - Documented missing ovn-nbctl commands: \"mirror-rule-add\",\n+ \"mirror-rule-del\", \"lr-nat-update-ext-ip\",\n+ \"ha-chassis-group-set-chassis-prio\", \"lsp-add-router-port\",\n+ and \"lsp-add-localnet-port\". Also documented missing options for\n+ \"lb-add\", \"meter-add\", \"lr-policy-add\", and \"lr-policy-del\", and\n+ fixed the \"nfg-list\" signature.\n - Dynamic Routing:\n * Add support for hub-and-spoke propagation via the \"hub-spoke\" option\n in dynamic-routing-redistribute settings.\ndiff --git a/utilities/ovn-nbctl.8.xml b/utilities/ovn-nbctl.8.xml\nindex 4fbd0bb0e..aaff29ec0 100644\n--- a/utilities/ovn-nbctl.8.xml\n+++ b/utilities/ovn-nbctl.8.xml\n@@ -545,10 +545,12 @@\n </p>\n </dd>\n \n- <dt><code>nfg-list</code></dt>\n+ <dt><code>nfg-list</code> [<var>nfg</var>]</dt>\n <dd>\n <p>\n- Lists all network function groups.\n+ Lists all network function groups. If a specific network\n+ function group <var>nfg</var> is given, only that group is\n+ listed.\n </p>\n </dd>\n \n@@ -634,7 +636,7 @@\n \n <h2>Meter Commands</h2>\n <dl>\n- <dt><code>meter-add</code> <var>name</var> <var>action</var> <var>rate</var> <var>unit</var> [<var>burst</var>]</dt>\n+ <dt>[<code>--fair</code>] [<code>--may-exist</code>] <code>meter-add</code> <var>name</var> <var>action</var> <var>rate</var> <var>unit</var> [<var>burst</var>]</dt>\n <dd>\n <p>\n Adds the specified meter. <var>name</var> must be a unique\n@@ -666,6 +668,18 @@\n internal use by OVN, so <code>ovn-nbctl</code> does not allow\n adding them.\n </p>\n+\n+ <p>\n+ If <code>--fair</code> is specified, the meter's\n+ <code>fair</code> column is set to <code>true</code>, enabling\n+ fair bandwidth sharing among rows that reference this meter.\n+ </p>\n+\n+ <p>\n+ If <code>--may-exist</code> is specified, adding a meter with\n+ a name that already exists will update the existing meter\n+ instead of reporting an error.\n+ </p>\n </dd>\n \n <dt><code>meter-del</code> [<var>name</var>]</dt>\n@@ -974,6 +988,40 @@\n <dd>\n Detaches the mirror <var>m</var> from the logical port <var>port</var>.\n </dd>\n+\n+ <dt>[<code>--may-exist</code>] <code>lsp-add-router-port</code>\n+ <var>switch</var> <var>port</var> <var>lrp_peer</var></dt>\n+ <dd>\n+ <p>\n+ Creates a new logical switch port named <var>port</var> on\n+ <var>switch</var> with type <code>router</code>, sets the\n+ <code>router-port</code> option to <var>lrp_peer</var>, and\n+ sets addresses to <code>router</code>.\n+ </p>\n+\n+ <p>\n+ With <code>--may-exist</code>, it is not an error if the port\n+ already exists, as long as it is in the same switch, has the\n+ same type, and has the same <code>router-port</code> option.\n+ </p>\n+ </dd>\n+\n+ <dt>[<code>--may-exist</code>] <code>lsp-add-localnet-port</code>\n+ <var>switch</var> <var>port</var> <var>network</var></dt>\n+ <dd>\n+ <p>\n+ Creates a new logical switch port named <var>port</var> on\n+ <var>switch</var> with type <code>localnet</code>, sets the\n+ <code>network_name</code> option to <var>network</var>, and\n+ sets addresses to <code>unknown</code>.\n+ </p>\n+\n+ <p>\n+ With <code>--may-exist</code>, it is not an error if the port\n+ already exists, as long as it is in the same switch, has the\n+ same type, and has the same <code>network_name</code> option.\n+ </p>\n+ </dd>\n </dl>\n \n <h2>Forwarding Group Commands</h2>\n@@ -1254,7 +1302,8 @@\n \n <dl>\n <dt>[<code>--may-exist</code>] [<code>--bfd</code>]\n- [<code>--route-table</code>=<var>ROUTE_TABLE</var>]\n+ [<code>--chain</code>=<var>CHAIN</var>]\n+ [<code>--output-port</code>=<var>OUTPUT_PORT</var>]\n <code>lr-policy-add</code>\n <var>router</var> <var>priority</var> <var>match</var>\n <var>action</var> [<var>nexthop</var>[,<var>nexthop</var>,...]]\n@@ -1262,16 +1311,18 @@\n <dd>\n <p>\n Add Policy to <var>router</var> which provides a way to configure\n- permit/deny and reroute policies on the router. Permit/deny policies\n- are similar to OVN ACLs, but exist on the logical-router. Reroute\n- policies are needed for service-insertion and service-chaining.\n- <var>nexthop</var> is an optional parameter. It needs to be provided\n- only when <var>action</var> is <var>reroute</var>. Multiple\n- <code>nexthops</code> can be specified for ECMP routing.\n- A policy is uniquely identified by <var>priority</var> and\n- <var>match</var>. Multiple policies can have the same\n- <var>priority</var>. <var>options</var> sets the router policy\n- options as key-value pair.\n+ allow, drop, jump, and reroute policies on the router. Allow and\n+ drop policies are similar to OVN ACLs, but exist on the\n+ logical-router. Reroute policies are needed for service-insertion\n+ and service-chaining. The <var>action</var> must be one of\n+ <code>allow</code>, <code>drop</code>, <code>jump</code>, or\n+ <code>reroute</code>. <var>nexthop</var> is an optional\n+ parameter. It needs to be provided only when <var>action</var>\n+ is <code>reroute</code>. Multiple <code>nexthops</code> can be\n+ specified for ECMP routing. A policy is uniquely identified by\n+ <var>priority</var> and <var>match</var>. Multiple policies can\n+ have the same <var>priority</var>. <var>options</var> sets the\n+ router policy options as key-value pair.\n The supported option is : <code>pkt_mark</code>.\n </p>\n \n@@ -1283,9 +1334,14 @@\n </p>\n \n <p>\n- The <code>--route-table</code> option can be used to list the\n- routes assigned to route table <var>ROUTE_TABLE</var> instead of\n- the default <code><main></code> table.\n+ The <code>--chain</code> option specifies the policy chain name.\n+ This is used when the <var>action</var> is <code>jump</code>.\n+ </p>\n+\n+ <p>\n+ The <code>--output-port</code> option specifies the output\n+ logical router port. This is only valid when the\n+ <var>action</var> is <code>reroute</code>.\n </p>\n \n <p>\n@@ -1313,7 +1369,9 @@\n </p>\n </dd>\n \n- <dt>[<code>--if-exists</code>] <code>lr-policy-del</code>\n+ <dt>[<code>--if-exists</code>]\n+ [<code>--chain</code>=<var>CHAIN</var>]\n+ <code>lr-policy-del</code>\n <var>router</var> [<var>{priority | uuid} [match]</var>]</dt>\n <dd>\n <p>\n@@ -1330,6 +1388,11 @@\n <var>uuid</var> does not exist, unless <code>--if-exists</code>\n is specified.\n </p>\n+\n+ <p>\n+ If <code>--chain</code> is specified, only policies in the\n+ specified chain are considered for deletion.\n+ </p>\n </dd>\n \n <dt><code>lr-policy-list</code> <var>router</var></dt>\n@@ -1474,11 +1537,36 @@\n <dd>\n Lists the NATs on <var>router</var>.\n </dd>\n+\n+ <dt>[<code>--is-exempted</code>] <code>lr-nat-update-ext-ip</code>\n+ <var>router</var> <var>type</var> <var>ip</var>\n+ <var>address_set</var></dt>\n+ <dd>\n+ <p>\n+ Updates the external IP address set for an existing NAT rule on\n+ <var>router</var>. <var>type</var> must be one of\n+ <code>dnat</code>, <code>snat</code>, or\n+ <code>dnat_and_snat</code>. The command finds the matching\n+ NAT rule by <var>type</var> and <var>ip</var>, then sets the\n+ <code>allowed_ext_ips</code> column of the NAT rule to\n+ <var>address_set</var>.\n+ </p>\n+\n+ <p>\n+ If <code>--is-exempted</code> is specified, sets\n+ <code>exempted_ext_ips</code> instead of\n+ <code>allowed_ext_ips</code>.\n+ </p>\n+\n+ <p>\n+ It is an error if no matching NAT rule is found.\n+ </p>\n+ </dd>\n </dl>\n \n <h2>Load Balancer Commands</h2>\n <dl>\n- <dt>[<code>--may-exist</code> | <code>--add-duplicate</code> | <code>--reject</code> | <code>--event</code> | <code>--template</code>] <code>lb-add</code> <var>lb</var> <var>vip</var> <var>ips</var> [<var>protocol</var>]</dt>\n+ <dt>[<code>--may-exist</code> | <code>--add-duplicate</code> | <code>--reject</code> | <code>--event</code> | <code>--template</code> | <code>--add-route</code>] <code>lb-add</code> <var>lb</var> <var>vip</var> <var>ips</var> [<var>protocol</var>] [<var>address_family</var>]</dt>\n <dd>\n <p>\n Creates a new load balancer named <var>lb</var> with the provided\n@@ -1537,6 +1625,17 @@\n ^vip:^vport ^backend udp ipv4</code>.\n </p>\n \n+ <p>\n+ If <code>--add-route</code> is specified, a route is automatically\n+ added for the load balancer's VIP subnet.\n+ </p>\n+\n+ <p>\n+ The optional <var>address_family</var> argument specifies the\n+ address family (<code>ipv4</code> or <code>ipv6</code>). This\n+ is primarily used with template load balancers.\n+ </p>\n+\n <p>\n The following example adds a load balancer.\n </p>\n@@ -1708,6 +1807,18 @@\n group <code>group</code>. It is an error if <code>chassis</code> does\n not exist.\n </dd>\n+\n+ <dt><code>ha-chassis-group-set-chassis-prio</code> <var>group</var>\n+ <var>chassis</var> <var>priority</var></dt>\n+ <dd>\n+ <p>\n+ Sets the priority of an existing HA chassis <var>chassis</var>\n+ within the HA chassis group <var>group</var>.\n+ <var>priority</var> must be between <code>0</code> and\n+ <code>32767</code>, inclusive. It is an error if\n+ <var>chassis</var> does not exist in <var>group</var>.\n+ </p>\n+ </dd>\n </dl>\n \n <h2> Control Plane Protection Policy commands</h2>\n@@ -1821,6 +1932,31 @@\n <dd>\n Lists the mirrors.\n </dd>\n+\n+ <dt><code>mirror-rule-add</code> <var>mirror_name</var>\n+ <var>priority</var> <var>match</var> <var>action</var></dt>\n+ <dd>\n+ <p>\n+ Adds a mirror rule to the mirror named <var>mirror_name</var>.\n+ <var>priority</var> is an integer between <code>0</code> and\n+ <code>32767</code>, inclusive. <var>match</var> is a match\n+ expression for selecting traffic. <var>action</var> must be\n+ <code>mirror</code> or <code>skip</code>. It is an error if\n+ a duplicate rule already exists on the mirror.\n+ </p>\n+ </dd>\n+\n+ <dt><code>mirror-rule-del</code> <var>mirror_name</var>\n+ [<var>priority</var> <var>match</var>]</dt>\n+ <dd>\n+ <p>\n+ Deletes mirror rules from the mirror named\n+ <var>mirror_name</var>. If only <var>mirror_name</var> is\n+ given, all mirror rules are deleted from that mirror. If\n+ <var>priority</var> and <var>match</var> are also given, only\n+ the rule matching both is deleted.\n+ </p>\n+ </dd>\n </dl>\n \n <h2>Health Check commands</h2>\ndiff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c\nindex 0ef207272..9f6bb374b 100644\n--- a/utilities/ovn-nbctl.c\n+++ b/utilities/ovn-nbctl.c\n@@ -289,64 +289,62 @@ General commands:\\n\\\n show ROUTER print overview of database contents for ROUTER\\n\\\n \\n\\\n Logical switch commands:\\n\\\n+ [--may-exist | --add-duplicate]\\n\\\n ls-add [SWITCH] create a logical switch named SWITCH\\n\\\n+ [--if-exists]\\n\\\n ls-del SWITCH delete SWITCH and all its ports\\n\\\n ls-list print the names of all logical switches\\n\\\n \\n\\\n ACL commands:\\n\\\n- [--type={switch | port-group}] [--log] [--severity=SEVERITY] [--name=NAME] [--may-exist]\\n\\\n- acl-add {SWITCH | PORTGROUP} DIRECTION PRIORITY MATCH ACTION [NETWORK-FUNCTION-GROUP]\\n\\\n+ [--type={switch | port-group}] [--log] [--severity=SEVERITY]\\n\\\n+ [--name=NAME] [--meter=METER] [--label=LABEL] [--may-exist]\\n\\\n+ [--apply-after-lb] [--tier=TIER]\\n\\\n+ [--sample-new=COLLECTOR_SET_ID] [--sample-est=COLLECTOR_SET_ID]\\n\\\n+ acl-add {SWITCH | PORTGROUP} DIRECTION PRIORITY MATCH ACTION\\n\\\n+ [NETWORK-FUNCTION-GROUP]\\n\\\n add an ACL to SWITCH/PORTGROUP\\n\\\n- [--type={switch | port-group}]\\n\\\n+ [--type={switch | port-group}] [--tier=TIER]\\n\\\n acl-del {SWITCH | PORTGROUP} [DIRECTION [PRIORITY MATCH]]\\n\\\n remove ACLs from SWITCH/PORTGROUP\\n\\\n- [--type={switch | port-group}]\\n\\\n+ [--type={switch | port-group}] [--all]\\n\\\n acl-list {SWITCH | PORTGROUP}\\n\\\n- print ACLs for SWITCH\\n\\\n+ print ACLs for SWITCH/PORTGROUP\\n\\\n \\n\\\n QoS commands:\\n\\\n- qos-add SWITCH DIRECTION PRIORITY MATCH [rate=RATE [burst=BURST]] [dscp=DSCP] [mark=MARK]\\n\\\n- add an QoS rule to SWITCH\\n\\\n+ [--may-exist]\\n\\\n+ qos-add SWITCH DIRECTION PRIORITY MATCH [rate=RATE [burst=BURST]]\\n\\\n+ [dscp=DSCP] [mark=MARK]\\n\\\n+ add a QoS rule to SWITCH\\n\\\n qos-del SWITCH [{DIRECTION | UUID} [PRIORITY MATCH]]\\n\\\n remove QoS rules from SWITCH\\n\\\n qos-list SWITCH print QoS rules for SWITCH\\n\\\n \\n\\\n Mirror commands:\\n\\\n- mirror-add NAME TYPE [INDEX] FILTER {IP | MIRROR-ID| TARGET-PORT} \\n\\\n+ [--may-exist]\\n\\\n+ mirror-add NAME TYPE [INDEX] FILTER DEST\\n\\\n add a mirror with given name\\n\\\n- specify TYPE 'gre', 'erspan', 'local'\\n\\\n- or 'lport'.\\n\\\n- specify the tunnel INDEX value\\n\\\n- (indicates key if GRE\\n\\\n- erpsan_idx if ERSPAN)\\n\\\n- specify FILTER for mirroring selection\\n\\\n- 'to-lport' / 'from-lport' / 'both'\\n\\\n- specify Sink / Destination i.e. Remote IP, or a\\n\\\n- local interface with external-ids:mirror-id\\n\\\n- matching MIRROR-ID\\n\\\n- In case of lport type specify logical switch\\n\\\n- port, which is a mirror target.\\n\\\n mirror-del [NAME] remove mirrors\\n\\\n mirror-list print mirrors\\n\\\n- mirror-rule-add MIRROR-NAME PRIORITY MATCH ACTION \\n\\\n- add a mirror rule selection to given lport\\n\\\n- mirror.\\n\\\n- specify MATCH for selecting mirrored traffic.\\n\\\n- specify ACTION 'mirror' or 'skip'.\\n\\\n- mirror-rule-del MIRROR-NAME [PRIORITY | MATCH] remove mirrors\\n\\\n+ mirror-rule-add MIRROR-NAME PRIORITY MATCH ACTION\\n\\\n+ add a mirror rule to given mirror\\n\\\n+ ACTION must be 'mirror' or 'skip'\\n\\\n+ mirror-rule-del MIRROR-NAME [PRIORITY MATCH]\\n\\\n+ remove mirror rules from a mirror\\n\\\n \\n\\\n Meter commands:\\n\\\n- [--fair]\\n\\\n+ [--fair] [--may-exist]\\n\\\n meter-add NAME ACTION RATE UNIT [BURST]\\n\\\n add a meter\\n\\\n meter-del [NAME] remove meters\\n\\\n meter-list print meters\\n\\\n \\n\\\n Logical switch port commands:\\n\\\n+ [--may-exist]\\n\\\n lsp-add SWITCH PORT add logical port PORT on SWITCH\\n\\\n lsp-add SWITCH PORT PARENT TAG\\n\\\n add logical port PORT on SWITCH with PARENT\\n\\\n on TAG\\n\\\n+ [--if-exists]\\n\\\n lsp-del PORT delete PORT from its attached switch\\n\\\n lsp-list SWITCH print the names of all logical ports on SWITCH\\n\\\n lsp-get-parent PORT get the parent of PORT if set\\n\\\n@@ -363,7 +361,8 @@ Logical switch port commands:\\n\\\n ('enabled' or 'disabled')\\n\\\n lsp-get-enabled PORT get administrative state PORT\\n\\\n ('enabled' or 'disabled')\\n\\\n- lsp-set-type PORT TYPE set the type for PORT\\n\\\n+ lsp-set-type PORT TYPE [peer=PEER]\\n\\\n+ set the type for PORT\\n\\\n lsp-get-type PORT get the type for PORT\\n\\\n lsp-set-options PORT KEY=VALUE [KEY=VALUE]...\\n\\\n set options related to the type of PORT\\n\\\n@@ -375,50 +374,65 @@ Logical switch port commands:\\n\\\n set dhcpv6 options for PORT\\n\\\n lsp-get-dhcpv6-options PORT get the dhcpv6 options for PORT\\n\\\n lsp-get-ls PORT get the logical switch which the port belongs to\\n\\\n+ [--may-exist]\\n\\\n lsp-attach-mirror PORT MIRROR attach source PORT to MIRROR\\n\\\n lsp-detach-mirror PORT MIRROR detach source PORT from MIRROR\\n\\\n- lsp-add-router-port LS PORT LRP_PEER\\n\\\n- Create LSP of type router with\\n\\\n- router-port set to LRP_PEER\\n\\\n- lsp-add-localnet-port LS PORT NETWORK\\n\\\n- Create LSP of type localnet with\\n\\\n- network_name set to NETWORK\\n\\\n+ [--may-exist]\\n\\\n+ lsp-add-router-port SWITCH PORT LRP_PEER\\n\\\n+ create LSP of type router with\\n\\\n+ router-port set to LRP_PEER\\n\\\n+ [--may-exist]\\n\\\n+ lsp-add-localnet-port SWITCH PORT NETWORK\\n\\\n+ create LSP of type localnet with\\n\\\n+ network_name set to NETWORK\\n\\\n \\n\\\n Forwarding group commands:\\n\\\n [--liveness]\\n\\\n fwd-group-add GROUP SWITCH VIP VMAC PORTS...\\n\\\n add a forwarding group on SWITCH\\n\\\n+ [--if-exists]\\n\\\n fwd-group-del GROUP delete a forwarding group\\n\\\n- fwd-group-list [SWITCH] print forwarding groups\\n\\\n+ fwd-group-list [GROUP] print forwarding groups\\n\\\n \\n\\\n Network function group commands:\\n\\\n+ [--may-exist]\\n\\\n nfg-add NETWORK-FUNCTION-GROUP ID MODE [NETWORK-FUNCTION]...\\n\\\n create a network-function-group\\n\\\n+ [--if-exists]\\n\\\n nfg-del NETWORK-FUNCTION-GROUP\\n\\\n delete a network-function-group\\n\\\n- nfg-list print all network-function-groups\\n\\\n+ nfg-list [NETWORK-FUNCTION-GROUP]\\n\\\n+ print network-function-groups\\n\\\n+ [--may-exist]\\n\\\n nfg-add-nf NETWORK-FUNCTION-GROUP NETWORK-FUNCTION\\n\\\n add a network-function to a\\n\\\n network-function-group\\n\\\n+ [--if-exists]\\n\\\n nfg-del-nf NETWORK-FUNCTION-GROUP NETWORK-FUNCTION\\n\\\n delete a network-function from a\\n\\\n network-function-group\\n\\\n \\n\\\n Network function commands:\\n\\\n+ [--may-exist]\\n\\\n nf-add NETWORK-FUNCTION ID PORT-IN PORT-OUT\\n\\\n create a network-function\\n\\\n+ [--if-exists]\\n\\\n nf-del NETWORK-FUNCTION delete a network-function\\n\\\n nf-list print all network-functions\\n\\\n \\n\\n\",program_name, program_name);\n printf(\"\\\n Logical router commands:\\n\\\n+ [--may-exist | --add-duplicate]\\n\\\n lr-add [ROUTER] create a logical router named ROUTER\\n\\\n+ [--if-exists]\\n\\\n lr-del ROUTER delete ROUTER and all its ports\\n\\\n lr-list print the names of all logical routers\\n\\\n \\n\\\n Logical router port commands:\\n\\\n- lrp-add ROUTER PORT MAC [NETWORK]... [peer=PEER]\\n\\\n+ [--may-exist]\\n\\\n+ lrp-add ROUTER PORT MAC [NETWORK]... [COLUMN[:KEY]=VALUE]...\\n\\\n add logical port PORT on ROUTER\\n\\\n+ [--may-exist]\\n\\\n lrp-set-gateway-chassis PORT CHASSIS [PRIORITY]\\n\\\n set gateway chassis for port PORT\\n\\\n lrp-set-options PORT KEY=VALUE [KEY=VALUE]...\\n\\\n@@ -428,6 +442,7 @@ Logical router port commands:\\n\\\n lrp-get-gateway-chassis PORT\\n\\\n print the names of all gateway chassis on PORT\\n\\\n with PRIORITY\\n\\\n+ [--if-exists]\\n\\\n lrp-del PORT delete PORT from its attached router\\n\\\n lrp-list ROUTER print the names of all ports on ROUTER\\n\\\n lrp-set-enabled PORT STATE\\n\\\n@@ -445,53 +460,59 @@ Logical router port commands:\\n\\\n ('overlay' or 'bridged')\\n\\\n \\n\\\n Route commands:\\n\\\n- [--policy=POLICY]\\n\\\n- [--ecmp]\\n\\\n- [--ecmp-symmetric-reply]\\n\\\n- [--route-table=ROUTE_TABLE]\\n\\\n- [--bfd]\\n\\\n+ [--may-exist] [--policy=POLICY] [--ecmp] [--ecmp-symmetric-reply]\\n\\\n+ [--route-table=ROUTE_TABLE] [--bfd]\\n\\\n lr-route-add ROUTER PREFIX NEXTHOP [PORT]\\n\\\n add a route to ROUTER\\n\\\n- [--policy=POLICY]\\n\\\n- [--route-table=ROUTE_TABLE]\\n\\\n+ [--if-exists] [--policy=POLICY] [--route-table=ROUTE_TABLE]\\n\\\n lr-route-del ROUTER [PREFIX [NEXTHOP [PORT]]]\\n\\\n remove routes from ROUTER\\n\\\n [--route-table=ROUTE_TABLE]\\n\\\n lr-route-list ROUTER print routes for ROUTER\\n\\\n \\n\\\n Policy commands:\\n\\\n- [--bfd]\\n\\\n- lr-policy-add ROUTER PRIORITY MATCH ACTION [NEXTHOP,[NEXTHOP,...]] \\\n-[OPTIONS KEY=VALUE ...] \\n\\\n- add a policy to router\\n\\\n+ [--may-exist] [--bfd] [--chain=CHAIN] [--output-port=OUTPUT_PORT]\\n\\\n+ lr-policy-add ROUTER PRIORITY MATCH ACTION [NEXTHOP,[NEXTHOP,...]]\\n\\\n+ [OPTIONS KEY=VALUE ...]\\n\\\n+ add a policy to ROUTER\\n\\\n+ [--if-exists] [--chain=CHAIN]\\n\\\n lr-policy-del ROUTER [{PRIORITY | UUID} [MATCH]]\\n\\\n remove policies from ROUTER\\n\\\n lr-policy-list ROUTER print policies for ROUTER\\n\\\n \\n\\n\");\n printf(\"\\\n NAT commands:\\n\\\n- [--stateless]\\n\\\n- [--portrange]\\n\\\n- [--add-route]\\n\\\n- [--gateway-port=GATEWAY_PORT]\\n\\\n- lr-nat-add ROUTER TYPE EXTERNAL_IP LOGICAL_IP [LOGICAL_PORT EXTERNAL_MAC]\\n\\\n- [EXTERNAL_PORT_RANGE]\\n\\\n+ [--may-exist] [--stateless] [--portrange] [--add-route]\\n\\\n+ [--gateway-port=GATEWAY_PORT] [--priority=PRIORITY] [--match=MATCH]\\n\\\n+ lr-nat-add ROUTER TYPE EXTERNAL_IP LOGICAL_IP\\n\\\n+ [LOGICAL_PORT EXTERNAL_MAC] [EXTERNAL_PORT_RANGE]\\n\\\n add a NAT to ROUTER\\n\\\n+ [--if-exists] [--match=MATCH]\\n\\\n lr-nat-del ROUTER [TYPE [IP] [GATEWAY_PORT]]\\n\\\n remove NATs from ROUTER\\n\\\n lr-nat-list ROUTER print NATs for ROUTER\\n\\\n+ [--is-exempted]\\n\\\n+ lr-nat-update-ext-ip ROUTER TYPE IP ADDRESS_SET\\n\\\n+ update external IP address set for a NAT rule\\n\\\n \\n\\\n LB commands:\\n\\\n- lb-add LB VIP[:PORT] IP[:PORT]... [PROTOCOL]\\n\\\n+ [--may-exist | --add-duplicate] [--reject] [--event] [--template]\\n\\\n+ [--add-route]\\n\\\n+ lb-add LB VIP[:PORT] IP[:PORT]... [PROTOCOL] [ADDRESS_FAMILY]\\n\\\n create a load-balancer or add a VIP to an\\n\\\n existing load balancer\\n\\\n+ [--if-exists]\\n\\\n lb-del LB [VIP] remove a load-balancer or just the VIP from\\n\\\n the load balancer\\n\\\n lb-list [LB] print load-balancers\\n\\\n+ [--may-exist]\\n\\\n lr-lb-add ROUTER LB add a load-balancer to ROUTER\\n\\\n+ [--if-exists]\\n\\\n lr-lb-del ROUTER [LB] remove load-balancers from ROUTER\\n\\\n lr-lb-list ROUTER print load-balancers\\n\\\n+ [--may-exist]\\n\\\n ls-lb-add SWITCH LB add a load-balancer to SWITCH\\n\\\n+ [--if-exists]\\n\\\n ls-lb-del SWITCH [LB] remove load-balancers from SWITCH\\n\\\n ls-lb-list SWITCH print load-balancers\\n\\\n \\n\\\n@@ -500,11 +521,10 @@ DHCP Options commands:\\n\\\n create a DHCP options row with CIDR\\n\\\n dhcp-options-del DHCP_OPTIONS_UUID\\n\\\n delete DHCP_OPTIONS_UUID\\n\\\n- dhcp-options-list \\n\\\n- lists the DHCP_Options rows\\n\\\n- dhcp-options-set-options DHCP_OPTIONS_UUID KEY=VALUE [KEY=VALUE]...\\n\\\n+ dhcp-options-list lists the DHCP_Options rows\\n\\\n+ dhcp-options-set-options DHCP_OPTIONS_UUID KEY=VALUE [KEY=VALUE]...\\n\\\n set DHCP options for DHCP_OPTIONS_UUID\\n\\\n- dhcp-options-get-options DHCO_OPTIONS_UUID \\n\\\n+ dhcp-options-get-options DHCP_OPTIONS_UUID\\n\\\n displays the DHCP options for DHCP_OPTIONS_UUID\\n\\\n \\n\\\n Connection commands:\\n\\\n@@ -516,50 +536,57 @@ Connection commands:\\n\\\n SSL/TLS commands:\\n\\\n get-ssl print the SSL/TLS configuration\\n\\\n del-ssl delete the SSL/TLS configuration\\n\\\n- set-ssl PRIV-KEY CERT CA-CERT [SSL-PROTOS [SSL-CIPHERS [SSL-CIPHERSUITES]]] \\\n-set the SSL/TLS configuration\\n\\\n+ [--bootstrap]\\n\\\n+ set-ssl PRIV-KEY CERT CA-CERT [SSL-PROTOS [SSL-CIPHERS [SSL-CIPHERSUITES]]]\\n\\\n+ set the SSL/TLS configuration\\n\\\n+\\n\\\n Port group commands:\\n\\\n- pg-add PG [PORTS] Create port group PG with optional PORTS\\n\\\n- pg-set-ports PG PORTS Set PORTS on port group PG\\n\\\n- pg-del PG Delete port group PG\\n\\\n- pg-get-ports PG Get PORTS on port group PG\\n\\\n+ pg-add PG [PORTS] create port group PG with optional PORTS\\n\\\n+ pg-set-ports PG PORTS set PORTS on port group PG\\n\\\n+ pg-del PG delete port group PG\\n\\\n+ pg-get-ports PG get PORTS on port group PG\\n\\\n+\\n\\\n HA chassis group commands:\\n\\\n- ha-chassis-group-add GRP Create an HA chassis group GRP\\n\\\n- ha-chassis-group-del GRP Delete the HA chassis group GRP\\n\\\n- ha-chassis-group-list [GRP] Print the supplied HA chassis group or all\\n\\\n+ ha-chassis-group-add GRP create an HA chassis group GRP\\n\\\n+ ha-chassis-group-del GRP delete the HA chassis group GRP\\n\\\n+ ha-chassis-group-list [GRP] print the supplied HA chassis group or all\\n\\\n if none supplied\\n\\\n- ha-chassis-group-add-chassis GRP CHASSIS PRIORITY Adds an HA\\\n-chassis with mandatory PRIORITY to the HA chassis group GRP\\n\\\n- ha-chassis-group-remove-chassis GRP CHASSIS Removes the HA chassis\\\n-CHASSIS from the HA chassis group GRP\\n\\\n+ ha-chassis-group-add-chassis GRP CHASSIS PRIORITY\\n\\\n+ add an HA chassis with PRIORITY to GRP\\n\\\n+ ha-chassis-group-remove-chassis GRP CHASSIS\\n\\\n+ remove the HA chassis CHASSIS from GRP\\n\\\n+ ha-chassis-group-set-chassis-prio GRP CHASSIS PRIORITY\\n\\\n+ set PRIORITY of CHASSIS in GRP\\n\\\n \\n\\\n Control Plane Protection Policy commands:\\n\\\n copp-add NAME PROTO METER\\n\\\n- Add a copp policy for PROTO packets on NAME\\n\\\n+ add a copp policy for PROTO packets on NAME\\n\\\n CoPP policy based on an existing METER.\\n\\\n copp-del NAME [PROTO]\\n\\\n- Delete the copp policy for PROTO packets for\\n\\\n+ delete the copp policy for PROTO packets for\\n\\\n NAME copp. If PROTO is not specified, delete all\\n\\\n copp policies defined for NAME.\\n\\\n copp-list NAME\\n\\\n- List all copp policies defined for control\\n\\\n+ list all copp policies defined for control\\n\\\n protocols NAME.\\n\\\n ls-copp-add NAME SWITCH\\n\\\n- Add a NAME copp policy on SWITCH logical switch.\\n\\\n+ add a NAME copp policy on SWITCH logical switch.\\n\\\n lr-copp-add NAME ROUTER\\n\\\n- Add a NAME copp policy on ROUTER logical router.\\n\\\n+ add a NAME copp policy on ROUTER logical router.\\n\\\n \\n\\\n MAC_Binding commands:\\n\\\n+ [--may-exist]\\n\\\n static-mac-binding-add LOGICAL_PORT IP MAC\\n\\\n- Add a Static_MAC_Binding entry\\n\\\n+ add a Static_MAC_Binding entry\\n\\\n+ [--if-exists]\\n\\\n static-mac-binding-del LOGICAL_PORT IP\\n\\\n- Delete Static_MAC_Binding entry\\n\\\n- static-mac-binding-list List all Static_MAC_Binding entries\\n\\\n+ delete Static_MAC_Binding entry\\n\\\n+ static-mac-binding-list list all Static_MAC_Binding entries\\n\\\n \\n\\\n Logical Switch Port Health Check:\\n\\\n- lsp-hc-add PORT PROTOCOL SOURCE_IP DST_PORT ADDRESS...\\n\\\n+ lsp-hc-add PORT PROTOCOL SOURCE_IP [DST_PORT] ADDRESS\\n\\\n add health check monitoring for PORT\\n\\\n- lsp-hc-del PORT HC_UUID delete health check monitoring for PORT\\n\\\n+ lsp-hc-del PORT [HC_UUID] delete health check monitoring for PORT\\n\\\n lsp-hc-list PORT list health checks for PORT\\n\\\n \\n\\\n %s\\\n", "prefixes": [ "ovs-dev", "1/5" ] }