Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2194510/?format=api
{ "id": 2194510, "url": "http://patchwork.ozlabs.org/api/patches/2194510/?format=api", "web_url": "http://patchwork.ozlabs.org/project/ovn/patch/20260209082505.2394190-2-aditya.mehakare@nutanix.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": "<20260209082505.2394190-2-aditya.mehakare@nutanix.com>", "list_archive_url": null, "date": "2026-02-09T08:25:04", "name": "[ovs-dev,v3,1/2] ovn-nb, ovn-nbctl: Add ID column to Network_Function table.", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": false, "hash": "c6dc31fe7ea0d62ef1198f5fb1628f7fabbb15ae", "submitter": { "id": 90537, "url": "http://patchwork.ozlabs.org/api/people/90537/?format=api", "name": "Aditya Mehakare", "email": "aditya.mehakare@nutanix.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/ovn/patch/20260209082505.2394190-2-aditya.mehakare@nutanix.com/mbox/", "series": [ { "id": 491477, "url": "http://patchwork.ozlabs.org/api/series/491477/?format=api", "web_url": "http://patchwork.ozlabs.org/project/ovn/list/?series=491477", "date": "2026-02-09T08:25:03", "name": "Network Function: Commit NF ID instead of NFG ID in CT.", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/491477/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2194510/comments/", "check": "fail", "checks": "http://patchwork.ozlabs.org/api/patches/2194510/checks/", "tags": {}, "related": [], "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\" (2048-bit key;\n unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256\n header.s=proofpoint20171006 header.b=23J0GDnQ;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256\n header.s=selector1 header.b=Rz6eDNGQ;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org\n (client-ip=140.211.166.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\" (2048-bit key)\n header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256\n header.s=proofpoint20171006 header.b=23J0GDnQ;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key,\n unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256\n header.s=selector1 header.b=Rz6eDNGQ", "smtp2.osuosl.org;\n dmarc=pass (p=none dis=none) header.from=nutanix.com" ], "Received": [ "from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.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 4f8d6z2xQkz1xtV\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 09 Feb 2026 19:25:31 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby smtp2.osuosl.org (Postfix) with ESMTP id F091440400;\n\tMon, 9 Feb 2026 08:25:25 +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 HH3C_iy2Oi8l; Mon, 9 Feb 2026 08:25:23 +0000 (UTC)", "from lists.linuxfoundation.org (lf-lists.osuosl.org\n [IPv6:2605:bc80:3010:104::8cd3:938])\n\tby smtp2.osuosl.org (Postfix) with ESMTPS id 70FEB403E3;\n\tMon, 9 Feb 2026 08:25:23 +0000 (UTC)", "from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id 5347AC02A4;\n\tMon, 9 Feb 2026 08:25:23 +0000 (UTC)", "from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133])\n by lists.linuxfoundation.org (Postfix) with ESMTP id C20BFC02A4\n for <dev@openvswitch.org>; Mon, 9 Feb 2026 08:25:21 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp2.osuosl.org (Postfix) with ESMTP id A0E57403DF\n for <dev@openvswitch.org>; Mon, 9 Feb 2026 08:25:21 +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 ehB8I2svt0BR for <dev@openvswitch.org>;\n Mon, 9 Feb 2026 08:25:20 +0000 (UTC)", "from mx0a-002c1b01.pphosted.com (mx0a-002c1b01.pphosted.com\n [148.163.151.68])\n by smtp2.osuosl.org (Postfix) with ESMTPS id 7F1CF403DB\n for <dev@openvswitch.org>; Mon, 9 Feb 2026 08:25:20 +0000 (UTC)", "from pps.filterd (m0127840.ppops.net [127.0.0.1])\n by mx0a-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 618G0IxN2135021; Mon, 9 Feb 2026 00:25:19 -0800", "from bl2pr02cu003.outbound.protection.outlook.com\n (mail-eastusazon11021088.outbound.protection.outlook.com [52.101.52.88])\n by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4c62ksarx6-1\n (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT);\n Mon, 09 Feb 2026 00:25:19 -0800 (PST)", "from CY5PR02MB9038.namprd02.prod.outlook.com (2603:10b6:930:32::5)\n by SJ0PR02MB8481.namprd02.prod.outlook.com (2603:10b6:a03:3f9::17) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.16; Mon, 9 Feb\n 2026 08:25:16 +0000", "from CY5PR02MB9038.namprd02.prod.outlook.com\n ([fe80::88d2:46ce:c264:17ec]) by CY5PR02MB9038.namprd02.prod.outlook.com\n ([fe80::88d2:46ce:c264:17ec%6]) with mapi id 15.20.9587.017; Mon, 9 Feb 2026\n 08:25:16 +0000" ], "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 smtp2.osuosl.org 70FEB403E3", "OpenDKIM Filter v2.11.0 smtp2.osuosl.org 7F1CF403DB" ], "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=148.163.151.68;\n helo=mx0a-002c1b01.pphosted.com; envelope-from=aditya.mehakare@nutanix.com;\n receiver=<UNKNOWN>", "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp2.osuosl.org 7F1CF403DB", "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h=\n cc:content-transfer-encoding:content-type:date:from:in-reply-to\n :message-id:mime-version:references:subject:to; s=\n proofpoint20171006; bh=5TS1S5pT8+Q1zth5YTz4HFvWs+sCNEjwOWpx9L8TQ\n E8=; b=23J0GDnQFMYeZEiCBhg2Ys3zI/WbFtcZHhzJSO+Au/Ifi1tO6r8d+UvKh\n 2BZpYYd5SAMOEmBrWMuckyJ0PFHaNtRi0AtyugMU6tBkntx/wl6deBzMR6y2kHGQ\n SCNDo4Bbs8B4vQz0Et68vT07R+r3XUawN9ldo5LmfubtqAkld8yNPrqBgQIEUL+G\n r2Kieoa2qwt8mWJXSWdtXH+gLUoEcd+Bte/tiyR7tMJfwtTtxCYMp4ZBNkttewjI\n HvhuR5bmsO2vLEya1HzEOPwUJB21TQUXGPuxYr0/FK6e1qnsMCMWSTWeXzcf9eXY\n EHWZt+8KDWmco90FLRmwL3l6RACvg==", "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=5TS1S5pT8+Q1zth5YTz4HFvWs+sCNEjwOWpx9L8TQE8=;\n b=Rz6eDNGQt25VP4PkgYJ1kGZbnK5kQwp3YppBat6cREvBgBK8w3/wyacBWWrTsBGOdGSMp3hG2XeqRYCCh0aTHrK+aadNKjAZrl8E1WSMon9Y0uTGzaWmSyckJlNvXg55qXgLPWCzSntEFKQNhNJD3itWT2l5rdcCXnhykqoG+XVFbZWPnHpPanb9g+mFCjEWjgnZREISXDUXKL8wn6yiya543mEB1ieuJisQnjwbgM4kfDXKI30MPvLbqto7beh3NLEqMabpRbxjOrtgj5EcAwqUPsKGXKj1eb6V1nInSw9kkfU57Uo9ce2XJg1OAYbjZ0PuFkQBocNGlFhu5obrjg==" ], "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=xAwyZqEeJ/jXXzkHKntHqPVpQYiYPxrtM63fmzkcK+88xQAnXWk5Bei+UA21qAGhaLbykoHHYwbtrYccepBqNZI45AjvtUbMjVj5eMQZAqnlAVrXVmvHncepBSpAmFBbrcsc1Nld5Hz/DVSPlP8mHi+Cks/r/5AOSXeD3oGYF1xG6OLb+qRlGMhypSw/h162jeJwoG7HzJyOe4BQK1PWZ8YTxaE+mL0i4BqYizGR4e5sY0i3VspwvgPj3p0m0elxt91qAznuBtelshcQ4ir5o3v+08z2WvV98p5SgNyg0QJZfkyZPN/UduWRJ1CZjdEd+HqkzqLGcjkTVuLiwaA6sA==", "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=5TS1S5pT8+Q1zth5YTz4HFvWs+sCNEjwOWpx9L8TQE8=;\n b=kNwFxlA9xe01VgVO/bNwol41hpypOEOwYI/Tb3BghYk1gRvYnPu2hZJzObbaZgX1qrBGRmfxa6ML/+WzIOonjeZXL4HFjaBrpHTYzYXHocC2kPakkube9aoEO5RzHuuZNQaa6IsDywGbxaQqO/bGPTGyVTb2PTqhW/15U8q5KxPz+xY7sos4Mqan5GyP8Est03ma815Qosajtvu2uu6y8qdR8lgkFda1mCjZg8eajP7vpRFU244kmMgURotoy3NfQEo8goflgW/8LhA00jwE64CgrywK2+gPGx8bM0rQHxypumI9CsyXyfjpiXooCdE092DLFem8Z69N5j8tA1ibpw==", "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com;\n dkim=pass header.d=nutanix.com; arc=none", "From": "Aditya Mehakare <aditya.mehakare@nutanix.com>", "To": "dev@openvswitch.org", "Date": "Mon, 9 Feb 2026 08:25:04 +0000", "Message-ID": "<20260209082505.2394190-2-aditya.mehakare@nutanix.com>", "X-Mailer": "git-send-email 2.43.5", "In-Reply-To": "<20260209082505.2394190-1-aditya.mehakare@nutanix.com>", "References": "<20260209082505.2394190-1-aditya.mehakare@nutanix.com>", "X-ClientProxiedBy": "PH8P220CA0048.NAMP220.PROD.OUTLOOK.COM\n (2603:10b6:510:2d9::25) To CY5PR02MB9038.namprd02.prod.outlook.com\n (2603:10b6:930:32::5)", "MIME-Version": "1.0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "CY5PR02MB9038:EE_|SJ0PR02MB8481:EE_", "X-MS-Office365-Filtering-Correlation-Id": "c0f2d4d7-5c05-41d9-9a72-08de67b4c068", "x-proofpoint-crosstenant": "true", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|1800799024|366016|376014|52116014|38350700014;", "X-Microsoft-Antispam-Message-Info": "\n Btl/aD47du0+P1Q9nGtI+1+KleTR3R36EQd/VZfXR1D7FVfNSgE8nVOvgUk6TrplYyaeVKf2vqraFxlvWhguQSMIhdk4T4fsTqyez6cPjcRjb5oknErkybkZ8iIJj9J50xF9pMpvhqbZQX6brsSChStZbTHgYeoxIw0kxe8RrDraJAHgJt9IMejTwP1P8r0WQTpfVKAkF61u85JQiH9mJhM3bK4sGUZSZZJINtD41FxdSHrFffaeVhKMob9SHKsImlez+AFQgRZ8AlMhE7LPHelaH17OXuqRVM4AOG5EWhDeNBVLhAzJlzJ1QBfwCdwQCtOT+Xe6xuP0ZbQjpJW0e26gUDoIvpWv7XNvKHfZosNVlQ3JpiNcp3R6DPtMQJwp8yV72QKt2yHhptGdU4yqtphl/nbg6wuMNBbJkwkv1xHvdL5URKJd7EpRQRRKcMn6k2+ZTAMi976l4Ian4LfCQQfNF3AmkrLpuAQkuVpw0ftWYDLggJ50oPWVg0990hlmO6v9+pCHGsdlsyxhsBL/AYTa617KfMFYKZiFgW0DNC2yeFmkpvuqjJnrrgN8u8euR93cm4CeJ0S5SygLcjhYxxmutfRpa5e7/Gl+5BEL6A8//qCoXIfCwmA1jMdXlUiIctbvXosq1TKEwwxB31tU4U+DD6rZdREY3kZQ1KqLDVTqd04xaxZ84/bSU6/5BajWKpBvCG7pZN1lsMfxV2QbiQI7NzN6ZqLvBF/A4DvgRJecOAxbJrXE0yJXRW8uM8EA3cvJy3oKQuUY0zLGdQUhXIMGmkwnuxJyd5kzdUOh80Xb2pcyXOg7WW5MQ7sTCr2UkFoT5VGf0n+XeyngHfsA3ERw/XRvW15PQ+AGvsQIAp7LpXprmLry+lPtO2dMnSG1sacst7dSB5U/mQ7hHqzaMKYI2QytMCnn4eerddKS4lDPXclwRRATY/SqXc/jq47LAV//L9E5exDmsqSy6ui5zd+oMjWb2GVI38XTwVRfIBJORro08gHEe4j+zAvl2Pxd9QQsJeq+temVkyd58cTTAtRObqC30Fg2W0ehuWYuH1lqIABrO6XAj6tA5GeQk1IDlY/C/OdGjakdtFsCB1pgj96pHtEy5VTIhfo1bE1B7LgDKqa/cFXloKKdylTtu+hWoROnluwXSEWbpWiVYGhIGxNweAZc4HXhfUjittZluaO9TqB7rgAYeM2hR/XRAgknjMhdQhC7R/ED7nRKDll6G8dDCJgZm3W58LdigHHaCm1c+BO4QFhkqE2spT3TE2B5O6vFskT2behy+L4tg3t0yq0KAAUTSN/VWwwpK1+CItoji3AlZiA1MHuIqSbQgjF04bQP9HvZAkwkglKimJWSNXYqXiu0Sf8tAZTvgk+9/RP93JbCrVizVZ7phhCssdrtu0e2VbXbWN8Mw001OHF18dOGhW0GzEXED/2Qi9JIkFpZWpchyknDednSuv7ZLtED2DtRGPNfRHG/cIzn+pXkSw9umZnNIXW+UTQG1NBsCALD8svPcuhjPT3mNyq0xOABWOMyEGnZTDvAkrrM22adxAUh0YtEdYegyyulpxVV4ARcPRk6C27qzm42qvFX27RVa6MDNcUhF5SEI1/THGNnZkW4fPdaOZgPycjcxcYIvjI=", "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:CY5PR02MB9038.namprd02.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230040)(1800799024)(366016)(376014)(52116014)(38350700014); DIR:OUT;\n SFP:1102;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n MGLDFJo2yA7cSndeqmlX+9JADF0a+8ZPMiN684CYELL6exiForOIqOsutDzIwyGcPSaSA9JLAgiV7+YVIvhlo0n4VapoFfR7vXE6QTH2kH2RczouZniwqr9BauKeb9CWaWqToWMIOOxK51GwqPOCNmbt48LsrtDgpMQsIfsB5s1NieyDII9n3m+NGMtQvy+vrt9rzfr7HBDYi7eOEUcKMjc6IQXhX4azLB7qXN4dda6VmDTfHZ62Z3WtCp9PmCjkLcA8MgCA4NP4ILdLZmBFn+j2pHZ33c2Z4QysZtTbaKuqYXY6lBQliwPAyfXKYn3nl1wSduOpy4JUslbPHIdHdLy5cGpSYA+R32FEWwWrbFn2CEZzM+FGbc8YlHq0gE6M+mrJPYaYV78TfBhh5lKtfMWdTcP9bGE+TO7kIN6Mi6HEpd4z8rjU1HMvL2G7/YBXMdpdvQVeRktvV3yhouPYXMfcsdR0bjhUy/+8k+OBj/cG5+0cK9CtRKNbcpJkplk/YerpnZFF6T/yz3TuQhhwORi2PEmY0yTORHpc4Ay2G6AbbcjsPAllzsNl/hBepXTqS5UPjibnLI/TAEmWX61UNpo+8qw2bjrjzT5OlpBNnoig52OVgEf3AiCZStSPdXk7w3ICIeLFvjlQT6onm0XdFXp0zo/PtGCpxhwD4Mhfg8K+9hZGeKA3flu3XXNeVPZV6GTuIEPeagP3QlBo4hijQ7g5JknGjkGnV2nFnHpzJXkENN2Se9XJ0U0lm1hD0JcEEn9QEUkv7mmJ5I9q/UnLysVLFfNSmgVbeiYgMlkjgqUm/7piTxl17Qv2+tK7oFwqVuPtEDTWp3Bx4FWfJ0Ui2Tfyk77cjldTd7PPlQjlRta4OQEC0jpqCVHC0Uhn2Kmi1Pdmm23cAxb8235pip2yy8AC8kOJi+ZpYAkN/zl/S7kr1ceqWg2CYb9+1pJRtT/Qh6UX3d92PgBnV1arhEDOIm6QpfLiN2sD8yV5zBiL/W4rMj7XQppy62fNL9aLAoDXNhnZyO6kvxFQrqT1WzTkIFuelmLQeSpd0Idh4LPrMw4B+lG77cQnwC82cnNlgg8fw+CPk3qlWE0xEG0yjNblSc8iNJdEej/TbGKtLNbqdl8yIA/XprKY5t/s+D2qRKY2Oy6GJH+SyISBusTp9ssd1rAkVXQuYvBQ2bszG65Y1h0xGpE7M9MDOj+Vmdh5as3Q17TncJH2QHCOh0foYJXNdW9zEWhCUPcFXdu7YnR2Kn7IW6HoEm/GwJY9lZwQRMCXJzSM4RKxdL/Tcm33LNMafD48AEkirLYvAdymgE5Fx4JalEK7lCDHai397PQqnbOiJoDtOMxs0Y0CLgdwb9gsBQsmGKteCigLJ6OXxh05p2GDWaL07bixU3j0x6uwh+17wsnUc006MpODzB7ffRu5h3cNDraDX+u3YexHvcF/1ZqvSYhrdijkTlstib6tbdgDwaVPtmjwDsWG92ULKh91oAi6THgxYFumSZ4WxAkjdz4sCmccETKgNyCldEJOYZD0B0MacOCaQ9tK7+OaGPoZU2M7Jsv+3sO3kJWy6A+LeiA5bXdfGqsDHpUksf9RQOQjQ+S7LQcPkwWLXbTnVENqAuSCPbI4+Ypmdl/KvbK6jYX4WEDD46BWgnOi+XOCj30S1UTteNtsRQlh6ZzoRTg3rLbelE0EXRQ1b5p7ZXRfLAsWVTZCxnaDuhlsSBEXGLP6HfwHUPewfPX/k/02ZxiW4Tt5A3F2gSVy2VXHYDKmj6k=", "X-OriginatorOrg": "nutanix.com", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n c0f2d4d7-5c05-41d9-9a72-08de67b4c068", "X-MS-Exchange-CrossTenant-AuthSource": "CY5PR02MB9038.namprd02.prod.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "09 Feb 2026 08:25:16.3912 (UTC)", "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted", "X-MS-Exchange-CrossTenant-Id": "bb047546-786f-4de1-bd75-24e5b6f79043", "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED", "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n PlPQ3NE3UOQ06fs400NRd2jr7Jmdazd5madPavJYVsvxPBb7fA9JpvcbWAhaWsxR4EXAyCrVYcrW1x7fcmlNUIoGmGXcIjsMZuwW3D1ElbY=", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "SJ0PR02MB8481", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwMjA5MDA2OSBTYWx0ZWRfXyIY1V09y5QFb\n TBeQSR6GCKzxbLhnyppmLEpXKSfvwc3Bt7vt03ewSdHvwIAHqrMlzCve6xDl8EL0bsrMfrpaJng\n Wfl9CJnUZaJUcNTq7qnyYaAdjlGSq7PV/5GrIm1wlrii6mQgFTS9yBSnWIahN+P4MLWHGaCI22n\n HaHgPgttWjQcE3YDA0sddtgUs6Onhs0RDA0MMtttvyX9nMlnz7S2GqPfDfkt7OCVFZ53Ef4A8Vl\n 3oihj6SwAVFBs9XIhkWeY8UkzvLys+tEjTPgkYuMU/ofV7b9ENteD15VtxbMTLLkO1JMSHe62Ai\n sWM63tTCDnv7pP0uIRLHPTB+48ZKrZvXUPHrbSecAW2L5zjLvWM8ibGLbVQsWJ0oEml5XTV8Z1w\n iO6b3uqamsjr7BoMWVqLG0ETb7PRVhDbQJTf14y6XzM1ygAimFQzwGpo/449C+8VjSkXW0V+VD4\n OygobktXmIzqXjGe7yw==", "X-Authority-Analysis": "v=2.4 cv=EO8LElZC c=1 sm=1 tr=0 ts=698999ef cx=c_pps\n a=iWUa97dvZcywjWCZh5/f9A==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19\n a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19\n a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=0kUYKlekyDsA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22\n a=64Cc0HZtAAAA:8 a=20KFwNOVAAAA:8 a=aAMxtZR7PRPacgAE-WMA:9\n a=O-m64GDmhePosm9E:21", "X-Proofpoint-ORIG-GUID": "ALrFj9170l6bL9X30vs-jpA7-HjGtImm", "X-Proofpoint-GUID": "ALrFj9170l6bL9X30vs-jpA7-HjGtImm", "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-02-08_05,2026-02-09_01,2025-10-01_01", "X-Proofpoint-Spam-Reason": "safe", "Subject": "[ovs-dev] [PATCH ovn v3 1/2] ovn-nb,\n ovn-nbctl: Add ID column to Network_Function 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>", "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": "This commit introduces a new 'id' column to the Network_Function\ntable in the OVN Northbound database schema. The ID is a mandatory\ninteger field (range 1-255) with a unique index constraint.\n\nThis change is required to support network function active-active\nmode in future releases. The ID will be used to uniquely identify\nnetwork functions in scenarios where multiple instances need to be\nmanaged simultaneously.\n\nSince this is a schema change that is not backward compatible, it\nis being introduced in the current release to ensure smoother\nupgrades when active-active mode support is added in subsequent\nreleases.\n\nSchema changes:\n- Added 'id' column to Network_Function table (integer, 1-255)\n- Added unique index on 'id' column alongside existing 'name'\n index\n\nChanges to ovn-nbctl:\n- Updated nf-add command to require ID parameter:\n nf-add NETWORK-FUNCTION ID PORT-IN PORT-OUT\n- Modified nf-list to display the ID field\n- Updated related documentation and tests\n\nSigned-off-by: Aditya Mehakare <aditya.mehakare@nutanix.com>\nAcked-by: Naveen Yerramneni <naveen.yerramneni@nutanix.com>\nAcked-by: Mark Michelson <mmichels@redhat.com>\n---\n ovn-nb.ovsschema | 10 +++++---\n ovn-nb.xml | 5 ++++\n tests/ovn-nbctl.at | 48 +++++++++++++++++++++++++++------------\n tests/ovn-northd.at | 8 +++----\n tests/ovn.at | 6 ++---\n tests/system-ovn.at | 4 ++--\n utilities/ovn-nbctl.8.xml | 19 ++++++++--------\n utilities/ovn-nbctl.c | 25 +++++++++++++++-----\n 8 files changed, 84 insertions(+), 41 deletions(-)", "diff": "diff --git a/ovn-nb.ovsschema b/ovn-nb.ovsschema\nindex 8c2c1d861..2c60d000c 100644\n--- a/ovn-nb.ovsschema\n+++ b/ovn-nb.ovsschema\n@@ -1,7 +1,7 @@\n {\n \"name\": \"OVN_Northbound\",\n- \"version\": \"7.15.0\",\n- \"cksum\": \"4060410729 43708\",\n+ \"version\": \"7.16.0\",\n+ \"cksum\": \"3182666148 43912\",\n \"tables\": {\n \"NB_Global\": {\n \"columns\": {\n@@ -213,10 +213,14 @@\n \"refTable\": \"Network_Function_Health_Check\",\n \"refType\": \"strong\"},\n \"min\": 0, \"max\": 1}},\n+ \"id\": {\n+ \"type\": {\"key\": {\"type\": \"integer\",\n+ \"minInteger\": 1,\n+ \"maxInteger\": 255}}},\n \"external_ids\": {\n \"type\": {\"key\": \"string\", \"value\": \"string\",\n \"min\": 0, \"max\": \"unlimited\"}}},\n- \"indexes\": [[\"name\"]],\n+ \"indexes\": [[\"name\"], [\"id\"]],\n \"isRoot\": true},\n \"Network_Function_Group\": {\n \"columns\": {\ndiff --git a/ovn-nb.xml b/ovn-nb.xml\nindex e9ca27413..2b4ab51f5 100644\n--- a/ovn-nb.xml\n+++ b/ovn-nb.xml\n@@ -6409,6 +6409,11 @@ or\n Name of the <ref table=\"Network_Function\"/>. Name should be unique.\n </column>\n \n+ <column name=\"id\">\n+ A unique integer between 1 and 255 must be assigned to each\n+ <code>Network_Function</code>.\n+ </column>\n+\n <column name=\"inport\">\n <ref table=\"Logical_Switch_Port\"/> where request traffic for from-lport\n ACL and response traffic for to-lport ACL is redirected.\ndiff --git a/tests/ovn-nbctl.at b/tests/ovn-nbctl.at\nindex dccf30758..f4cb89b82 100644\n--- a/tests/ovn-nbctl.at\n+++ b/tests/ovn-nbctl.at\n@@ -3245,13 +3245,13 @@ AT_CHECK([check ovn-nbctl set logical_switch_port svc-port1 \\\n options:is-nf=true options:nf-linked-port=svc-port0])\n \n # Create network-function.\n-AT_CHECK([ovn-nbctl nf-add nf0 svc-port0 svc-port1])\n-AT_CHECK([ovn-nbctl nf-add nf0 svc-port0 svc-port1], [1], [],\n+AT_CHECK([ovn-nbctl nf-add nf0 1 svc-port0 svc-port1])\n+AT_CHECK([ovn-nbctl nf-add nf0 1 svc-port0 svc-port1], [1], [],\n [ovn-nbctl: nf0: same name network-function already exists\n ])\n-AT_CHECK([ovn-nbctl --may-exist nf-add nf0 svc-port0 svc-port1])\n+AT_CHECK([ovn-nbctl --may-exist nf-add nf0 1 svc-port0 svc-port1])\n AT_CHECK([ovn-nbctl nf-list | uuidfilt], [0], [dnl\n-<0> (nf0) in:svc-port0 out:svc-port1\n+<0> (nf0) id:1 in:svc-port0 out:svc-port1\n ])\n \n # Test --may-exist overwrite behavior: update existing network function with new ports\n@@ -3263,25 +3263,25 @@ AT_CHECK([check ovn-nbctl set logical_switch_port svc-port4 \\\n AT_CHECK([check ovn-nbctl set logical_switch_port svc-port5 \\\n options:receive_multicast=false options:lsp_learn_fdb=false \\\n options:is-nf=true options:nf-linked-port=svc-port4])\n-AT_CHECK([ovn-nbctl --may-exist nf-add nf0 svc-port4 svc-port5])\n+AT_CHECK([ovn-nbctl --may-exist nf-add nf0 1 svc-port4 svc-port5])\n AT_CHECK([ovn-nbctl nf-list | uuidfilt], [0], [dnl\n-<0> (nf0) in:svc-port4 out:svc-port5\n+<0> (nf0) id:1 in:svc-port4 out:svc-port5\n ])\n \n # Create two more network-functions, one with same inport and outport.\n AT_CHECK([check ovn-nbctl lsp-add ls0 svc-port2])\n AT_CHECK([check ovn-nbctl lsp-add ls0 svc-port3])\n-AT_CHECK([ovn-nbctl nf-add nf1 svc-port2 svc-port3])\n+AT_CHECK([ovn-nbctl nf-add nf1 2 svc-port2 svc-port3])\n AT_CHECK([ovn-nbctl nf-list | uuidfilt], [0], [dnl\n-<0> (nf0) in:svc-port4 out:svc-port5\n-<1> (nf1) in:svc-port2 out:svc-port3\n+<0> (nf0) id:1 in:svc-port4 out:svc-port5\n+<1> (nf1) id:2 in:svc-port2 out:svc-port3\n ])\n \n-AT_CHECK([ovn-nbctl nf-add nf2 svc-port2 svc-port2])\n+AT_CHECK([ovn-nbctl nf-add nf2 3 svc-port2 svc-port2])\n AT_CHECK([ovn-nbctl nf-list | uuidfilt], [0], [dnl\n-<0> (nf0) in:svc-port4 out:svc-port5\n-<1> (nf1) in:svc-port2 out:svc-port3\n-<2> (nf2) in:svc-port2 out:svc-port2\n+<0> (nf0) id:1 in:svc-port4 out:svc-port5\n+<1> (nf1) id:2 in:svc-port2 out:svc-port3\n+<2> (nf2) id:3 in:svc-port2 out:svc-port2\n ])\n \n # Create a network-function-group.\n@@ -3334,10 +3334,30 @@ AT_CHECK([ovn-nbctl nfg-list | uuidfilt], [0], [])\n AT_CHECK([ovn-nbctl nf-del nf1])\n AT_CHECK([ovn-nbctl nf-del nf0])\n AT_CHECK([ovn-nbctl nf-list | uuidfilt], [0], [dnl\n-<0> (nf2) in:svc-port2 out:svc-port2\n+<0> (nf2) id:3 in:svc-port2 out:svc-port2\n ])\n AT_CHECK([ovn-nbctl nf-del nf2])\n AT_CHECK([ovn-nbctl nf-list | uuidfilt], [0], [])\n+\n+# Test ID validation and uniqueness\n+AT_CHECK([check ovn-nbctl lsp-add ls0 svc-port6])\n+AT_CHECK([check ovn-nbctl lsp-add ls0 svc-port7])\n+# Test invalid ID (out of range)\n+AT_CHECK([ovn-nbctl nf-add nf3 0 svc-port6 svc-port7], [1], [],\n+ [ovn-nbctl: network-function id must be between 1 and 255\n+])\n+AT_CHECK([ovn-nbctl nf-add nf3 256 svc-port6 svc-port7], [1], [],\n+ [ovn-nbctl: network-function id must be between 1 and 255\n+])\n+AT_CHECK([ovn-nbctl nf-add nf3 abc svc-port6 svc-port7], [1], [],\n+ [ovn-nbctl: network-function id must be between 1 and 255\n+])\n+# Test valid ID\n+AT_CHECK([ovn-nbctl nf-add nf3 10 svc-port6 svc-port7])\n+AT_CHECK([ovn-nbctl nf-list | uuidfilt], [0], [dnl\n+<0> (nf3) id:10 in:svc-port6 out:svc-port7\n+])\n+AT_CHECK([ovn-nbctl nf-del nf3])\n ])\n \n AT_SETUP([ovn-nbctl - TLS server name indication (SNI) with --ssl-server-name])\ndiff --git a/tests/ovn-northd.at b/tests/ovn-northd.at\nindex 512e42036..4ccfad7bb 100644\n--- a/tests/ovn-northd.at\n+++ b/tests/ovn-northd.at\n@@ -18441,7 +18441,7 @@ check ovn-nbctl set logical_switch_port sw0-nf-p1 \\\n check ovn-nbctl set logical_switch_port sw0-nf-p2 \\\n options:receive_multicast=false options:lsp_learn_mac=false \\\n options:is-nf=true options:nf-linked-port=sw0-nf-p1\n-check ovn-nbctl nf-add nf0 sw0-nf-p1 sw0-nf-p2\n+check ovn-nbctl nf-add nf0 1 sw0-nf-p1 sw0-nf-p2\n check ovn-nbctl nfg-add nfg0 1 inline nf0\n \n check ovn-nbctl lsp-add sw0 sw0-p1 -- lsp-set-addresses sw0-p1 \"00:00:00:00:00:01 10.0.0.2\"\n@@ -18554,7 +18554,7 @@ check ovn-nbctl set logical_switch_port sw0-nf-p3 \\\n check ovn-nbctl set logical_switch_port sw0-nf-p4 \\\n options:receive_multicast=false options:lsp_learn_mac=false \\\n options:is-nf=true options:nf-linked-port=sw0-nf-p3\n-check ovn-nbctl nf-add nf1 sw0-nf-p3 sw0-nf-p4\n+check ovn-nbctl nf-add nf1 2 sw0-nf-p3 sw0-nf-p4\n check ovn-nbctl nfg-add nfg1 2 inline nf1\n check ovn-nbctl acl-add pg0 to-lport 1003 \"outport == @pg0 && ip4.src == 10.0.0.4\" allow-related nfg1\n check ovn-sbctl lsp-bind sw0-nf-p3 hv1\n@@ -18732,8 +18732,8 @@ check ovn-nbctl set logical_switch_port $nfsw-p4 \\\n options:receive_multicast=false options:lsp_learn_fdb=false \\\n options:is-nf=true options:nf-linked-port=$nfsw-p3\n \n-check ovn-nbctl nf-add nf0 $nfsw-p1 $nfsw-p2\n-check ovn-nbctl nf-add nf1 $nfsw-p3 $nfsw-p4\n+check ovn-nbctl nf-add nf0 1 $nfsw-p1 $nfsw-p2\n+check ovn-nbctl nf-add nf1 2 $nfsw-p3 $nfsw-p4\n nf0_uuid=$(fetch_column nb:network_function _uuid name=nf0)\n nf1_uuid=$(fetch_column nb:network_function _uuid name=nf1)\n AT_CHECK(\ndiff --git a/tests/ovn.at b/tests/ovn.at\nindex 4c1abb045..5bb0489ba 100644\n--- a/tests/ovn.at\n+++ b/tests/ovn.at\n@@ -35851,7 +35851,7 @@ check ovs-vsctl add-port br-int ls0-hv -- set Interface ls0-hv external-ids:ifac\n check ovn-nbctl lr-add lr0\n \n check ovn-nbctl ls-add ls0\n-check ovn-nbctl lsp-add ls0 ls0-lr0 \n+check ovn-nbctl lsp-add ls0 ls0-lr0\n check ovn-nbctl lsp-set-type ls0-lr0 router\n check ovn-nbctl lsp-set-addresses ls0-lr0 router\n check ovn-nbctl lrp-add lr0 lr0-ls0 00:00:00:00:00:01 10.0.0.1\n@@ -43598,7 +43598,7 @@ create_logical_topology() {\n check ovn-nbctl set logical_switch_port $sw-nf-p2 \\\n options:receive_multicast=false options:lsp_learn_mac=false \\\n options:is-nf=true options:nf-linked-port=$sw-nf-p1\n- check ovn-nbctl nf-add nf0 $sw-nf-p1 $sw-nf-p2\n+ check ovn-nbctl nf-add nf0 1 $sw-nf-p1 $sw-nf-p2\n check ovn-nbctl nfg-add nfg0 1 inline nf0\n check ovn-nbctl pg-add pg0 $sw-p1\n check ovn-nbctl acl-add pg0 from-lport 1002 \"inport == @pg0 && ip4.dst == 192.168.0.12\" allow-related nfg0\n@@ -43788,7 +43788,7 @@ create_logical_topology() {\n check ovn-nbctl set logical_switch_port $sw-nf-p2 \\\n options:receive_multicast=false options:lsp_learn_mac=false \\\n options:is-nf=true options:nf-linked-port=$sw-nf-p1\n- check ovn-nbctl nf-add nf0 $sw-nf-p1 $sw-nf-p2\n+ check ovn-nbctl nf-add nf0 1 $sw-nf-p1 $sw-nf-p2\n check ovn-nbctl nfg-add nfg0 1 inline nf0\n check ovn-nbctl pg-add pg0 $sw-p1\n check ovn-nbctl acl-add pg0 to-lport 1002 \"outport == @pg0 && ip4.src == 192.168.0.12\" allow-related nfg0\ndiff --git a/tests/system-ovn.at b/tests/system-ovn.at\nindex 67f03e3be..c217540c0 100644\n--- a/tests/system-ovn.at\n+++ b/tests/system-ovn.at\n@@ -19529,7 +19529,7 @@ check ovn-nbctl set logical_switch_port child-4 options:receive_multicast=false\n \n AS_BOX([Test-1: Single NF without health check])\n \n-check ovn-nbctl nf-add nf0 nf-p1 nf-p2\n+check ovn-nbctl nf-add nf0 1 nf-p1 nf-p2\n nf0_uuid=$(fetch_column nb:network_function _uuid name=nf0)\n check ovn-nbctl nfg-add nfg0 1 inline nf0\n nfg_uuid=$(fetch_column nb:network_function_group _uuid name=nfg0)\n@@ -19631,7 +19631,7 @@ validate_single_nf_no_health_check \"server\" \"client\" \"192.168.1.10\" \"Outbound\"\n AS_BOX([Test-2: Two NFs with health check config enabled])\n \n # Add second NF\n-check ovn-nbctl nf-add nf1 nf-p3 nf-p4\n+check ovn-nbctl nf-add nf1 2 nf-p3 nf-p4\n nf1_uuid=$(fetch_column nb:network_function _uuid name=nf1)\n \n # Add bridge for nf1\ndiff --git a/utilities/ovn-nbctl.8.xml b/utilities/ovn-nbctl.8.xml\nindex 7df902944..253f6d8fc 100644\n--- a/utilities/ovn-nbctl.8.xml\n+++ b/utilities/ovn-nbctl.8.xml\n@@ -475,16 +475,17 @@\n <h2>Network Function Commands</h2>\n \n <dl>\n- <dt>[<code>--may-exist</code>] <code>nf-add</code> <var>nf</var> <var>inport</var> <var>outport</var></dt>\n+ <dt>[<code>--may-exist</code>] <code>nf-add</code> <var>nf</var> <var>id</var> <var>inport</var> <var>outport</var></dt>\n <dd>\n <p>\n- Creates a new network function named <var>nf</var> with logical\n- switch ports <var>inport</var> and <var>outport</var>. Both the\n- ports must be on the same logical switch and must be already\n- created. When used in an ACL action, traffic matching the ACL\n- are redirected to the <var>inport</var> if it is from-lport ACL\n- and to the <var>outport</var> if it is to-lport ACL. The response\n- packets are sent through the same ports in reverse order.\n+ Creates a new network function named <var>nf</var> with the specified\n+ <var>id</var> (an integer between 1 and 255) and logical switch ports\n+ <var>inport</var> and <var>outport</var>. Both the ports must be on\n+ the same logical switch and must be already created. When used in an\n+ ACL action, traffic matching the ACL are redirected to the\n+ <var>inport</var> if it is from-lport ACL and to <var>outport</var>\n+ if it is to-lport ACL. The response packets are sent through the same\n+ ports in reverse order.\n </p>\n \n <p>\n@@ -1498,7 +1499,7 @@\n The optional argument <var>protocol</var> must be either\n <code>tcp</code>, <code>udp</code> or <code>sctp</code>. This argument\n is useful when a port number is provided as part of the <var>vip</var>.\n- If the <var>protocol</var> is unspecified and a port number is provided \n+ If the <var>protocol</var> is unspecified and a port number is provided\n as part of the <var>vip</var>, OVN assumes the <var>protocol</var> to\n be <code>tcp</code>.\n </p>\ndiff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c\nindex cdf6b578a..2b674cad3 100644\n--- a/utilities/ovn-nbctl.c\n+++ b/utilities/ovn-nbctl.c\n@@ -393,7 +393,7 @@ Network function group commands:\\n\\\n network-function-group\\n\\\n \\n\\\n Network function commands:\\n\\\n- nf-add NETWORK-FUNCTION PORT-IN PORT-OUT\\n\\\n+ nf-add NETWORK-FUNCTION ID PORT-IN PORT-OUT\\n\\\n create a network-function\\n\\\n nf-del NETWORK-FUNCTION delete a network-function\\n\\\n nf-list print all network-functions\\n\\\n@@ -2483,6 +2483,7 @@ nbctl_pre_nf_add(struct ctl_context *ctx)\n \n ovsdb_idl_add_column(ctx->idl, &nbrec_logical_switch_port_col_name);\n ovsdb_idl_add_column(ctx->idl, &nbrec_network_function_col_name);\n+ ovsdb_idl_add_column(ctx->idl, &nbrec_network_function_col_id);\n ovsdb_idl_add_column(ctx->idl, &nbrec_network_function_col_inport);\n ovsdb_idl_add_column(ctx->idl, &nbrec_network_function_col_outport);\n }\n@@ -2495,17 +2496,25 @@ nbctl_nf_add(struct ctl_context *ctx)\n \n bool may_exist = shash_find(&ctx->options, \"--may-exist\") != NULL;\n \n- char * error = lsp_by_name_or_uuid(ctx, ctx->argv[2], true, &lsp_in);\n+ char * error = lsp_by_name_or_uuid(ctx, ctx->argv[3], true, &lsp_in);\n if (error) {\n ctx->error = error;\n return;\n }\n- error = lsp_by_name_or_uuid(ctx, ctx->argv[3], true, &lsp_out);\n+ error = lsp_by_name_or_uuid(ctx, ctx->argv[4], true, &lsp_out);\n if (error) {\n ctx->error = error;\n return;\n }\n \n+ /* Validate and parse ID */\n+ int64_t nf_id = 0;\n+ if (!ovs_scan(ctx->argv[2], \"%\"SCNd64, &nf_id)\n+ || nf_id < 1 || nf_id > 255) {\n+ ctl_error(ctx, \"network-function id must be between 1 and 255\");\n+ return;\n+ }\n+\n const char *nf_name = ctx->argv[1];\n \n /* Check if network function already exists */\n@@ -2528,6 +2537,9 @@ nbctl_nf_add(struct ctl_context *ctx)\n nbrec_network_function_set_name(nf, nf_name);\n }\n \n+ /* Set ID */\n+ nbrec_network_function_set_id(nf, nf_id);\n+\n /* Set/update the ports */\n nbrec_network_function_set_inport(nf, lsp_in);\n nbrec_network_function_set_outport(nf, lsp_out);\n@@ -2560,6 +2572,7 @@ static void\n nbctl_pre_nf_list(struct ctl_context *ctx)\n {\n ovsdb_idl_add_column(ctx->idl, &nbrec_network_function_col_name);\n+ ovsdb_idl_add_column(ctx->idl, &nbrec_network_function_col_id);\n ovsdb_idl_add_column(ctx->idl, &nbrec_network_function_col_inport);\n ovsdb_idl_add_column(ctx->idl, &nbrec_network_function_col_outport);\n ovsdb_idl_add_column(ctx->idl, &nbrec_logical_switch_port_col_name);\n@@ -2577,9 +2590,9 @@ nbctl_nf_list(struct ctl_context *ctx)\n const char *linport_name = linport ? linport->name : \"<not_set>\";\n const char *loutport_name = loutport ? loutport->name : \"<not_set>\";\n smap_add_format(&nfs, nf->name,\n- UUID_FMT \" (%s) in:%s out:%s\",\n+ UUID_FMT \" (%s) id:%\"PRId64\" in:%s out:%s\",\n UUID_ARGS(&nf->header_.uuid),\n- nf->name, linport_name, loutport_name);\n+ nf->name, nf->id, linport_name, loutport_name);\n }\n const struct smap_node **nodes = smap_sort(&nfs);\n for (size_t i = 0; i < smap_count(&nfs); i++) {\n@@ -8877,7 +8890,7 @@ static const struct ctl_command_syntax nbctl_commands[] = {\n nbctl_nf_group_del_network_function, NULL, \"--if-exists\", RW },\n \n /* network-function commands. */\n- { \"nf-add\", 3, 3, \"NETWORK-FUNCTION PORT-IN PORT-OUT\",\n+ { \"nf-add\", 4, 4, \"NETWORK-FUNCTION ID PORT-IN PORT-OUT\",\n nbctl_pre_nf_add,\n nbctl_nf_add,\n NULL, \"--may-exist\", RW },\n", "prefixes": [ "ovs-dev", "v3", "1/2" ] }