Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/1883680/?format=api
{ "id": 1883680, "url": "http://patchwork.ozlabs.org/api/1.1/patches/1883680/?format=api", "web_url": "http://patchwork.ozlabs.org/project/ovn/patch/20240108130004.51995-1-priyankar.jain@nutanix.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": "<20240108130004.51995-1-priyankar.jain@nutanix.com>", "date": "2024-01-08T13:00:04", "name": "[ovs-dev,v2] northd: Added svc_monitor_ipv4 in NB_Global options.", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": false, "hash": "b407f92554b48992caa5303ce39cc7ea3ea57b41", "submitter": { "id": 80621, "url": "http://patchwork.ozlabs.org/api/1.1/people/80621/?format=api", "name": "Priyankar Jain", "email": "priyankar.jain@nutanix.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/ovn/patch/20240108130004.51995-1-priyankar.jain@nutanix.com/mbox/", "series": [ { "id": 389350, "url": "http://patchwork.ozlabs.org/api/1.1/series/389350/?format=api", "web_url": "http://patchwork.ozlabs.org/project/ovn/list/?series=389350", "date": "2024-01-08T13:00:04", "name": "[ovs-dev,v2] northd: Added svc_monitor_ipv4 in NB_Global options.", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/389350/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/1883680/comments/", "check": "warning", "checks": "http://patchwork.ozlabs.org/api/patches/1883680/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\" (2048-bit key;\n unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256\n header.s=proofpoint20171006 header.b=v89c5yZs;\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=AQSH6Nmq;\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\" (2048-bit key)\n header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256\n header.s=proofpoint20171006 header.b=v89c5yZs;\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=AQSH6Nmq", "smtp4.osuosl.org;\n dkim=pass (2048-bit key) header.d=nutanix.com header.i=@nutanix.com\n header.a=rsa-sha256 header.s=proofpoint20171006 header.b=v89c5yZs;\n dkim=pass (2048-bit key,\n unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256\n header.s=selector1 header.b=AQSH6Nmq" ], "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 4T7vSb6T9xz1yPX\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 9 Jan 2024 00:05:51 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby smtp2.osuosl.org (Postfix) with ESMTP id 94C7440A41;\n\tMon, 8 Jan 2024 13:05:49 +0000 (UTC)", "from smtp2.osuosl.org ([127.0.0.1])\n\tby localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id YSozxSU0UWky; Mon, 8 Jan 2024 13:05:46 +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 920FC409D7;\n\tMon, 8 Jan 2024 13:05:45 +0000 (UTC)", "from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id 566C8C0077;\n\tMon, 8 Jan 2024 13:05:45 +0000 (UTC)", "from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137])\n by lists.linuxfoundation.org (Postfix) with ESMTP id CB8A6C0037\n for <dev@openvswitch.org>; Mon, 8 Jan 2024 13:05:43 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp4.osuosl.org (Postfix) with ESMTP id A39E3417B6\n for <dev@openvswitch.org>; Mon, 8 Jan 2024 13:05:43 +0000 (UTC)", "from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n with ESMTP id aQc5T7uhLsMR for <dev@openvswitch.org>;\n Mon, 8 Jan 2024 13:05:41 +0000 (UTC)", "from mx0a-002c1b01.pphosted.com (mx0a-002c1b01.pphosted.com\n [148.163.151.68])\n by smtp4.osuosl.org (Postfix) with ESMTPS id CF945417B5\n for <dev@openvswitch.org>; Mon, 8 Jan 2024 13:05:40 +0000 (UTC)", "from pps.filterd (m0127840.ppops.net [127.0.0.1])\n by mx0a-002c1b01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id\n 4082hPfx024055\n for <dev@openvswitch.org>; Mon, 8 Jan 2024 05:00:22 -0800", "from nam10-dm6-obe.outbound.protection.outlook.com\n (mail-dm6nam10lp2100.outbound.protection.outlook.com [104.47.58.100])\n by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 3vf42vav96-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)\n for <dev@openvswitch.org>; Mon, 08 Jan 2024 05:00:21 -0800 (PST)", "from PH0PR02MB7496.namprd02.prod.outlook.com (2603:10b6:510:16::12)\n by CH2PR02MB7016.namprd02.prod.outlook.com (2603:10b6:610:81::9) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Mon, 8 Jan\n 2024 13:00:17 +0000", "from PH0PR02MB7496.namprd02.prod.outlook.com\n ([fe80::1618:78d0:e98c:2910]) by PH0PR02MB7496.namprd02.prod.outlook.com\n ([fe80::1618:78d0:e98c:2910%7]) with mapi id 15.20.7159.018; Mon, 8 Jan 2024\n 13:00:17 +0000" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 smtp2.osuosl.org 94C7440A41", "OpenDKIM Filter v2.11.0 smtp2.osuosl.org 920FC409D7", "OpenDKIM Filter v2.11.0 smtp4.osuosl.org A39E3417B6", "OpenDKIM Filter v2.11.0 smtp4.osuosl.org CF945417B5" ], "X-Virus-Scanned": [ "amavisd-new at osuosl.org", "amavisd-new at osuosl.org" ], "X-Greylist": "delayed 318 seconds by postgrey-1.37 at util1.osuosl.org;\n Mon, 08 Jan 2024 13:05:40 UTC", "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h=\n from:to:cc:subject:date:message-id:content-transfer-encoding\n :content-type:mime-version; s=proofpoint20171006; bh=wQ23XIayVqU\n tdK8KMkOjvQ2380573q/p4kxUiDu5HUo=; b=v89c5yZs45YknkXKwLr/csTIPBB\n U4SfO1sD4e4u3HXTCVAP9iIig4JfrgrLocm2LpaY1KOcgsiv6yHyzI05YicZiv9V\n HYxBb2WAAVGW8J70ArLusVCoGhhwV8cO4xGij+z4b5F2zYzYbDYmqshcXQ+bnjbI\n 8DJarfAOZ+P9Q5+v8e/gp0q/4oNSRhYlOh25Sd/VdrC/uafGnTjm4TPpq148cg3Z\n D9hhh96X0AmEa8M2WNX22UbSaJYdKRAW2ZpsSeS0sT+8s5LGs+9WvwV6vcV0uFWE\n PNrqGrEwB1Aosx6iHuHMZleiX0Yuvl01zT99UyXZkUlUDnsrft4W4GlQOHA==", "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=wQ23XIayVqUtdK8KMkOjvQ2380573q/p4kxUiDu5HUo=;\n b=AQSH6NmqBMDcrHNVg85TqS/JIp1PV0oVbXAslf199wsMZAT4c0P3JC4wCZKmkuMrhwlqpqNp+R76C2LNasux8teZdyMX3ogacBQ/olr0DY6McmFbPPWFJnWwtlTQSeQQuG43lg6LU5mrMWjRrF07FbMCGhI6+uayzEiDwFOoTouf6G32m4WDuRHSa0QKjFV7Cx83mdDCXlYfZkayz3ADiClk8+u4PhKu7y5dA7qIlf/6A99Zga0FaiUZCTDX0Zrrvx0MV7zClkciH+38vVq9cii/fH3q2dk93Stv1LeN3qAjAWcuHtgaeDr5Cbn7eyXfU83bANRMHZCm6QiSIjraAw==" ], "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=M/63of9QpN//IJSE9MxHLzhMRgsVICooF9VDxM6QkP491LB0lBPSU/MWqDp5w7IdGs9LQwpM5WxkF0VtrH2T7m14qT1PYOPn2uurSgkIFU49CLWj+4UWNMlwUukCnCUj3w/IlBTSL+Vu4Vqbmesj2l1yoX1gibT8qbsU0WNsMT4wMMDfB3thE4RIPpu2BEwvW1CFu3NP8KYWj3QxiDqKElgMQUYQS9FUp/ibWXmrMRxVPyK8fNLkWMJanMFt3S9+8vMv03CAKO+Lwv7O7qIl2y98vDcYQz5egsxq01UThHphFsTzcFmOZRmFGxxcgP6pfly319AvB7TOF//EPVLEdw==", "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\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=wQ23XIayVqUtdK8KMkOjvQ2380573q/p4kxUiDu5HUo=;\n b=XBn3z/5kISqfIfdTSFiSZwxeMMRHLZ0ANVAIz+HScyoViYaN6+FaIG7lSbdPYWHHf/EjBR/9REUSyod6Lni1v/Mqmk04+HxM3bRwlkrb3bTt436GtPDXArWY2abfMDisyiNPp9aTfY1GtTzJzntoJhUAUm0ln9TRka8g0djjHF6Rj1tXd0LWG89wO5z+ijGAgP5yshB93SCxIy+g71kRM3aFDn7ic9IPljKBxMKWaZmGPln+GV0Sw33csfMHK4DDdcDvLC+kjQrJQyod9E1I3Kvfe4RKUssrjijsaaCDiOleR3UJPBWS/Qto9wjvLI5ZWIjepv6ZJd1ea9DQQZ1DXw==", "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": "Priyankar Jain <priyankar.jain@nutanix.com>", "To": "dev@openvswitch.org", "Date": "Mon, 8 Jan 2024 18:30:04 +0530", "Message-Id": "<20240108130004.51995-1-priyankar.jain@nutanix.com>", "X-Mailer": "git-send-email 2.39.2 (Apple Git-143)", "X-ClientProxiedBy": "MA0P287CA0013.INDP287.PROD.OUTLOOK.COM\n (2603:1096:a01:d9::13) To PH0PR02MB7496.namprd02.prod.outlook.com\n (2603:10b6:510:16::12)", "MIME-Version": "1.0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "PH0PR02MB7496:EE_|CH2PR02MB7016:EE_", "X-MS-Office365-Filtering-Correlation-Id": "bd357971-3eb0-4055-ddf7-08dc1049c2d7", "x-proofpoint-crosstenant": "true", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "BCL:0;", "X-Microsoft-Antispam-Message-Info": "\n JJJAd9lpwYia/bUIo/Prfdu0smSFma9XjZgWsDhbP1Acj7jLFC5ci1dlYJbRuSCzeVppxWXPyQRjznbaFQmdhmy/YQMUvDSYEj5c9h47PJlWsee7Fi6sxykkBJnNnlch0mXsaGUsqHDaxd7HP78JwsV1HLenZQ+vp9Qqx0ObE3oN5jFbhiF9OcCnLv/YMu0xrCGUmT5q44wAaZutAJofpxHAAYooL1QQ17PfIC75h5rXlCMjgHvlO8NUQyETBzTd77a6TyoBBB2TfNl4fFX7HNW6YbBTHqCV1uGzjtFDWzoBS7JSrLYSY/zuYRuEaXY0nZkuMikDHU1hHuRQguiQiGdWPgWRktF63bXkJvE1J514pouRMRK6ibBuzwR/bhuxR+9NKxnPVWuDxt8xcvrnzP8Z48nRqiUR4d+7BMTk3RShjdjtoUV09ULE4hXdGoy/A5kyH+BvVzhdZj70LRb8R8d3VTj3DMGdC6crPAb/0jsbGLedMRKgoJHoRtiC0Nh6S/rUZZ0Idl77aozieTkOlF0lekATVrVkjuglRW1ZY5b0WxstQuxu7zojLg0GiAycMrBTBWiHZXZonivs5ZvdLh9or/0POncnNpTOY7mbZx4eYsrUAAAV9+9E6QMRKBEH", "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:PH0PR02MB7496.namprd02.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230031)(366004)(39860400002)(396003)(136003)(376002)(346002)(230922051799003)(1800799012)(64100799003)(186009)(451199024)(30864003)(38100700002)(41300700001)(2906002)(52116002)(6916009)(5660300002)(38350700005)(6486002)(44832011)(36756003)(86362001)(6666004)(6512007)(6506007)(316002)(8676002)(8936002)(4326008)(66946007)(66556008)(66476007)(83380400001)(1076003)(26005)(478600001)(107886003)(2616005)(579004)(559001);\n DIR:OUT; SFP:1102;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n b7V2acrInSDmcfWj3L3Rd+6djaODnDz3egTDcVddx9q1+8Gb0+4ZyM7fYxQKWX0rhD1R2kUtSM896fIhLkswq38s9Pf1SmCsQ51l64lnUfM0x3etkR2cDPBqgjGGckLakbSwaRiF1bcrTM47uuFelc7HvPILd6znXeGBNoLiz5sxkkpsuTPJ5fx0ULr2HfM6Vcj3A7xILU55u2rTC3zbxdHA57Dn/fQjJG1Cc/yyW9ZDvCpKJcK7xYc3YfzBI+ReuNypfagVg3EHL/IKWmO9pe85zfOtJYwF0T3loCiZBcVBnRXXH6R/fff3T3Zczb3fw0JDzPGbXY2u7wTqpSjmPeZ+mD4nnAYdaB0m8y1rh0O8LPDer5OM4AKk8WW7AFthoe3YK1w1Y8UncbXyvPVmS5NNllRNqXE5IUhLHxzBNsqUkulGzFHmhUV9Kc4AyG/ESjSPeilkBNyc4G88o6OslKU9z2lj/+33VIhg1bXdX2g68wBb1aj+SDclbH6AuDHP2QxKc7Sx8SyaBshp3W9WWmWXXLf7SCZwT59bAWLmK2JJmI0VXU6ixnrgMecq+2bRSupSUPo6Q8MRNqmYXHslIT8ID0auX0sXRO381uVcok4jxy4spylgh8o77K92z7kjvXFMtfFaTGdpL4Jtgsi/HAUEy2WGySceSpzSlGujxy0MHmXOuMBggEntuVLGtsxGQksMn30V3KnSjLwW4wPwo1FyZR0X1ioMdgnVpcSDMiQfMdJKQkSkwduPCrHHVdwDLiM9Z/TqrvBPEQSfzOQkbf1mPY06e2EXWQsdiaCTlXjf8GbSDP5Nm0feCOrkr+w8Kh6NWQCOhKKajjc58fIn3L41v1QJPCfnra65Ixar9TDUs+f5SD3f+csMJb9gBzq2MaxgHf+0Xy5p2spulGnX72hVz2P1q5I264qtUUCeQcV8GQqeWNNI377pYwuIsUYyTpjF1LYb21cyy0QoCOsXaUlVxrIXvv4D6e1wyAP39H/p5gWyXQImySuw0pKjLEJY0NOElcPpt+q7TaAkmkYyGhhYlWxBmi/3A52sta7IhMoxNaptDiXqLbiYwyq9VfrHdPSWzg42L4zrYqE0bGYOyWbSpGw5pDHewDDhWWHUI/Ps4LlvxnCEkzdVlcxVCTXNAkGKg75DmozhZYykGvNT/5PIZuIDqZav4XZrqNT4vRsp3oYehgQW8J4ODcj7Uz7EPNQOI9LxuHtDPUD8+3z+LI4qucQbckV7FbFiLDqxegdnEglV2TgxGnPYTex9mh4Ox87z6zqApB60m/5dKYHEdToq8dVSb6uV4Jz0AsMFSUHPXNvH7HFDQybf1yApr7TPc9c2RKFmj0e8vCqnRVgUeng+HBPh0Dw/57Xan344tkSdVbvzkYPhAdbfP7KLlw1l8j3i9oncXEKPg4NNsuymCBj7NK7tO0sqt3f+Cm2mMUKBupx+795Axak+aEvLF7gyKHph7e9yceq89PQfDsqFfx5id5dABoSHVRV2cZL8udyXmOEkJzbjOzlky3HkINva9dahJzKC72+IQ1pauiZbqkaGfEdCuj7KtDmnCv2T+5DdQXFCaMPbXUQ9yAB8Kynn3hlfz9RAvVSSv56y4f6BZQ==", "X-OriginatorOrg": "nutanix.com", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n bd357971-3eb0-4055-ddf7-08dc1049c2d7", "X-MS-Exchange-CrossTenant-AuthSource": "PH0PR02MB7496.namprd02.prod.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "08 Jan 2024 13:00:17.2948 (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 IsimWtg+JZfo+QezAe+3gP9r+aFCjKqQKIr+VGAwLKsMWJEIYBNEJtdMwTS2A/qpWSQ6YioIek0l/eWCvoIqUPIKUhgNxYHDzrJnM7hONOA=", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CH2PR02MB7016", "X-Proofpoint-GUID": "3Cy4ls1THg1M35zwpslfuBm19jrwNwYZ", "X-Proofpoint-ORIG-GUID": "3Cy4ls1THg1M35zwpslfuBm19jrwNwYZ", "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26\n definitions=2023-11-28_27,2023-11-27_01,2023-05-22_02", "X-Proofpoint-Spam-Reason": "safe", "Subject": "[ovs-dev] [PATCH ovn v2] northd: Added svc_monitor_ipv4 in\n\tNB_Global options.", "X-BeenThere": "ovs-dev@openvswitch.org", "X-Mailman-Version": "2.1.15", "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 adds a new optional svc_monitor_ipv4 config in the NB_Global\noptions column. This IP address can be used to send the packets to the\nOVN controller bypassing most of the logical switches pipelines.\n\nUsage: Currently Load balancer health check requires a source IP address\nto be allocated from the subnets where backends are present.\nThis change removes that requirement and instead user can give one IP\naddress for the system and set it in NB_Global:options:svc_monitor_ipv4.\nWhile configuring the health check for the load balancer user can\nprovide this same IP while specifying the ip-port mappings.\n\nSigned-off-by: Priyankar Jain <priyankar.jain@nutanix.com>\n---\n\nChanges since v1:\n - Fixed one testcase in ovn-northd.at\n\n---\n northd/en-sync-sb.c | 10 +++++\n northd/northd.c | 34 +++++++++++++--\n northd/northd.h | 1 +\n northd/ovn-northd.8.xml | 40 +++++++++++------\n tests/ovn-northd.at | 96 ++++++++++++++++++++---------------------\n 5 files changed, 116 insertions(+), 65 deletions(-)", "diff": "diff --git a/northd/en-sync-sb.c b/northd/en-sync-sb.c\nindex 2ec3bf54f..95e9ead29 100644\n--- a/northd/en-sync-sb.c\n+++ b/northd/en-sync-sb.c\n@@ -372,6 +372,16 @@ sync_addr_sets(struct ovsdb_idl_txn *ovnsb_txn,\n sync_addr_set(ovnsb_txn, \"svc_monitor_mac\", &svc, &sb_address_sets);\n sorted_array_destroy(&svc);\n \n+ /* Service monitor IP. */\n+ const char *svc_monitor_ip4 = northd_get_svc_monitor_ip4();\n+ int num_addr = 0; /* Create empty address-set by default */\n+ if (svc_monitor_ip4) {\n+ num_addr = 1;\n+ }\n+ struct sorted_array ip_svc = sorted_array_create(&svc_monitor_ip4,\n+ num_addr, false);\n+ sync_addr_set(ovnsb_txn, \"svc_monitor_ip4\", &ip_svc, &sb_address_sets);\n+\n /* sync port group generated address sets first */\n const struct nbrec_port_group *nb_port_group;\n NBREC_PORT_GROUP_TABLE_FOR_EACH (nb_port_group,\ndiff --git a/northd/northd.c b/northd/northd.c\nindex db3cd272e..f6d35143a 100644\n--- a/northd/northd.c\n+++ b/northd/northd.c\n@@ -82,6 +82,7 @@ static bool use_common_zone = false;\n static char svc_monitor_mac[ETH_ADDR_STRLEN + 1];\n static struct eth_addr svc_monitor_mac_ea;\n \n+static char *svc_monitor_ip4 = NULL;\n /* If this option is 'true' northd will make use of ct.inv match fields.\n * Otherwise, it will avoid using it. The default is true. */\n static bool use_ct_inv_match = true;\n@@ -7197,7 +7198,8 @@ build_pre_acls(struct ovn_datapath *od,\n ovn_lflow_add(lflows, od, S_SWITCH_OUT_PRE_ACL, 0, \"1\", \"next;\");\n \n ovn_lflow_add(lflows, od, S_SWITCH_IN_PRE_ACL, 110,\n- \"eth.dst == $svc_monitor_mac\", \"next;\");\n+ \"eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4\",\n+ \"next;\");\n \n ovn_lflow_add(lflows, od, S_SWITCH_OUT_PRE_ACL, 110,\n \"eth.src == $svc_monitor_mac\", \"next;\");\n@@ -7370,7 +7372,8 @@ build_pre_lb(struct ovn_datapath *od, const struct shash *meter_groups,\n \n /* Do not send service monitor packets to conntrack. */\n ovn_lflow_add(lflows, od, S_SWITCH_IN_PRE_LB, 110,\n- \"eth.dst == $svc_monitor_mac\", \"next;\");\n+ \"eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4\",\n+ \"next;\");\n ovn_lflow_add(lflows, od, S_SWITCH_OUT_PRE_LB, 110,\n \"eth.src == $svc_monitor_mac\", \"next;\");\n \n@@ -8238,7 +8241,7 @@ build_acls(struct ovn_datapath *od, const struct chassis_features *features,\n /* Add a 34000 priority flow to advance the service monitor reply\n * packets to skip applying ingress ACLs. */\n ovn_lflow_add(lflows, od, S_SWITCH_IN_ACL_EVAL, 34000,\n- \"eth.dst == $svc_monitor_mac\",\n+ \"eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4\",\n REGBIT_ACL_VERDICT_ALLOW\" = 1; next;\");\n \n /* Add a 34000 priority flow to advance the service monitor packets\n@@ -10325,7 +10328,8 @@ build_lswitch_destination_lookup_bmcast(struct ovn_datapath *od,\n ovs_assert(od->nbs);\n \n ovn_lflow_metered(lflows, od, S_SWITCH_IN_L2_LKUP, 110,\n- \"eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)\",\n+ \"(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4)\"\n+ \" && (tcp || icmp || icmp6)\",\n \"handle_svc_check(inport);\",\n copp_meter_get(COPP_SVC_MONITOR, od->nbs->copp,\n meter_groups));\n@@ -17891,6 +17895,22 @@ ovnnb_db_run(struct northd_input *input_data,\n smap_replace(&options, \"svc_monitor_mac\", svc_monitor_mac);\n }\n \n+ const char *monitor_ip4 = smap_get(&nb->options, \"svc_monitor_ip4\");\n+ if (monitor_ip4) {\n+ struct sockaddr_storage svc_mon_src_addr;\n+ if (inet_parse_address(monitor_ip4, &svc_mon_src_addr)) {\n+ struct ds src_ip_s = DS_EMPTY_INITIALIZER;\n+ ss_format_address_nobracks(&svc_mon_src_addr, &src_ip_s);\n+ svc_monitor_ip4 = ds_steal_cstr(&src_ip_s);\n+ } else {\n+ free(svc_monitor_ip4);\n+ svc_monitor_ip4 = NULL;\n+ }\n+ } else {\n+ free(svc_monitor_ip4);\n+ svc_monitor_ip4 = NULL;\n+ }\n+\n char *max_tunid = xasprintf(\"%d\",\n get_ovn_max_dp_key_local(input_data->sbrec_chassis_table));\n smap_replace(&options, \"max_tunid\", max_tunid);\n@@ -18326,3 +18346,9 @@ northd_get_datapath_for_port(const struct hmap *ls_ports,\n \n return op ? op->od : NULL;\n }\n+\n+const char *\n+northd_get_svc_monitor_ip4(void)\n+{\n+ return svc_monitor_ip4;\n+}\ndiff --git a/northd/northd.h b/northd/northd.h\nindex 5be7b5384..a69b96bda 100644\n--- a/northd/northd.h\n+++ b/northd/northd.h\n@@ -374,4 +374,5 @@ bool check_sb_lb_duplicates(const struct sbrec_load_balancer_table *);\n void sync_pbs(struct ovsdb_idl_txn *, struct hmap *ls_ports);\n bool sync_pbs_for_northd_ls_changes(struct tracked_ls_changes *);\n \n+const char *northd_get_svc_monitor_ip4(void);\n #endif /* NORTHD_H */\ndiff --git a/northd/ovn-northd.8.xml b/northd/ovn-northd.8.xml\nindex 98cf7adb4..c121fbb4c 100644\n--- a/northd/ovn-northd.8.xml\n+++ b/northd/ovn-northd.8.xml\n@@ -448,11 +448,14 @@\n \n <p>\n This table also has a priority-110 flow with the match\n- <code>eth.dst == <var>E</var></code> for all logical switch\n- datapaths to move traffic to the next table. Where <var>E</var>\n- is the service monitor mac defined in the\n+ <code>eth.dst == <var>E</var> || ip4.dst == <var>I</var></code> for all\n+ logical switch datapaths to move traffic to the next table. Where\n+ <var>E</var> is the service monitor mac defined in the\n <ref column=\"options:svc_monitor_mac\" table=\"NB_Global\"\n db=\"OVN_Northbound\"/> column of <ref table=\"NB_Global\"\n+ db=\"OVN_Northbound\"/> table and <var>I</var> is the service monitor\n+ IP defined in the <ref column=\"options:svc_monitor_ip4\" table=\"NB_Global\"\n+ db=\"OVN_Northbound\"/> column of <ref table=\"NB_Global\"\n db=\"OVN_Northbound\"/> table.\n </p>\n \n@@ -515,11 +518,14 @@\n \n <p>\n This table also has a priority-110 flow with the match\n- <code>eth.dst == <var>E</var></code> for all logical switch\n- datapaths to move traffic to the next table. Where <var>E</var>\n- is the service monitor mac defined in the\n+ <code>eth.dst == <var>E</var> || ip4.dst == <var>I</var></code> for all\n+ logical switch datapaths to move traffic to the next table. Where\n+ <var>E</var> is the service monitor mac defined in the\n <ref column=\"options:svc_monitor_mac\" table=\"NB_Global\"\n db=\"OVN_Northbound\"/> column of <ref table=\"NB_Global\"\n+ db=\"OVN_Northbound\"/> table and <var>I</var> is the service monitor\n+ IP defined in the <ref column=\"options:svc_monitor_ip4\" table=\"NB_Global\"\n+ db=\"OVN_Northbound\"/> column of <ref table=\"NB_Global\"\n db=\"OVN_Northbound\"/> table.\n </p>\n \n@@ -820,12 +826,15 @@\n <ul>\n <li>\n A priority 34000 logical flow is added for each logical switch datapath\n- with the match <code>eth.dst = <var>E</var></code> to allow the service\n- monitor reply packet destined to <code>ovn-controller</code>\n- that sets the allow bit, where <var>E</var> is the\n- service monitor mac defined in the\n+ with the match <code>eth.dst = <var>E</var> || ip4.dst == <var>I</var>\n+ </code> to allow the service monitor reply packet destined to\n+ <code>ovn-controller</code> that sets the allow bit, where <var>E</var>\n+ is the service monitor mac defined in the\n <ref column=\"options:svc_monitor_mac\" table=\"NB_Global\"\n db=\"OVN_Northbound\"/> column of <ref table=\"NB_Global\"\n+ db=\"OVN_Northbound\"/> table and <var>I</var> is the service monitor IP\n+ defined in the <ref column=\"options:svc_monitor_ip4\" table=\"NB_Global\"\n+ db=\"OVN_Northbound\"/> column of <ref table=\"NB_Global\"\n db=\"OVN_Northbound\"/> table.\n </li>\n </ul>\n@@ -1883,11 +1892,16 @@ output;\n <ul>\n <li>\n A priority-110 flow with the match\n- <code>eth.src == <var>E</var></code> for all logical switch\n- datapaths and applies the action <code>handle_svc_check(inport)</code>.\n- Where <var>E</var> is the service monitor mac defined in the\n+ <code>eth.src == <var>E</var> || ip4.dst == <var>I</var></code> for\n+ all logical switch datapaths and applies the action\n+ <code>handle_svc_check(inport)</code>. Where <var>E</var> is the\n+ service monitor mac defined in the\n <ref column=\"options:svc_monitor_mac\" table=\"NB_Global\"\n db=\"OVN_Northbound\"/> column of <ref table=\"NB_Global\"\n+ db=\"OVN_Northbound\"/> table and <var>I</var> is the\n+ service monitor IP defined in the\n+ <ref column=\"options:svc_monitor_ip4\" table=\"NB_Global\"\n+ db=\"OVN_Northbound\"/> column of <ref table=\"NB_Global\"\n db=\"OVN_Northbound\"/> table.\n </li>\n \ndiff --git a/tests/ovn-northd.at b/tests/ovn-northd.at\nindex 34bd25de7..dcb2e514c 100644\n--- a/tests/ovn-northd.at\n+++ b/tests/ovn-northd.at\n@@ -2611,7 +2611,7 @@ AT_CHECK([ovn-sbctl lflow-list ls | grep -e ls_in_acl_hint -e ls_out_acl_hint -e\n table=8 (ls_in_acl_eval ), priority=1 , match=(ip && ct.est && ct_mark.blocked == 1), action=(reg0[[1]] = 1; reg8[[16]] = 1; next;)\n table=8 (ls_in_acl_eval ), priority=1001 , match=(reg0[[7]] == 1 && (ip)), action=(reg8[[16]] = 1; reg0[[1]] = 1; next;)\n table=8 (ls_in_acl_eval ), priority=1001 , match=(reg0[[8]] == 1 && (ip)), action=(reg8[[16]] = 1; next;)\n- table=8 (ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;)\n+ table=8 (ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(reg8[[16]] = 1; next;)\n table=8 (ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;)\n table=8 (ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;)\n table=8 (ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;)\n@@ -4318,7 +4318,7 @@ check_stateful_flows() {\n AT_CHECK([grep \"ls_in_pre_lb\" sw0flows | sort | sed 's/table=./table=?/'], [0], [dnl\n table=? (ls_in_pre_lb ), priority=0 , match=(1), action=(next;)\n table=? (ls_in_pre_lb ), priority=100 , match=(ip), action=(reg0[[2]] = 1; next;)\n- table=? (ls_in_pre_lb ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=? (ls_in_pre_lb ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=? (ls_in_pre_lb ), priority=110 , match=(eth.mcast), action=(next;)\n table=? (ls_in_pre_lb ), priority=110 , match=(ip && inport == \"sw0-lr0\"), action=(next;)\n table=? (ls_in_pre_lb ), priority=110 , match=(nd || nd_rs || nd_ra || mldv1 || mldv2), action=(next;)\n@@ -4388,7 +4388,7 @@ AT_CAPTURE_FILE([sw0flows])\n \n AT_CHECK([grep \"ls_in_pre_lb\" sw0flows | sort | sed 's/table=./table=?/'], [0], [dnl\n table=? (ls_in_pre_lb ), priority=0 , match=(1), action=(next;)\n- table=? (ls_in_pre_lb ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=? (ls_in_pre_lb ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=? (ls_in_pre_lb ), priority=110 , match=(eth.mcast), action=(next;)\n table=? (ls_in_pre_lb ), priority=110 , match=(ip && inport == \"sw0-lr0\"), action=(next;)\n table=? (ls_in_pre_lb ), priority=110 , match=(nd || nd_rs || nd_ra || mldv1 || mldv2), action=(next;)\n@@ -5079,7 +5079,7 @@ check ovn-nbctl --wait=sb sync\n ovn-sbctl lflow-list ls1 > ls1_lflows\n AT_CHECK([grep \"ls_in_l2_lkup\" ls1_lflows | sed 's/table=../table=??/' | sort], [0], [dnl\n table=??(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)\n- table=??(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n+ table=??(ls_in_l2_lkup ), priority=110 , match=((eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4) && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:01), action=(outport = \"ls1-ro1\"; output;)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:02), action=(outport = \"vm1\"; output;)\n table=??(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = \"_MC_flood\"; output;)\n@@ -5091,7 +5091,7 @@ AT_CHECK([grep \"ls_in_l2_lkup\" ls1_lflows | sed 's/table=../table=??/' | sort],\n ovn-sbctl lflow-list ls2 > ls2_lflows\n AT_CHECK([grep \"ls_in_l2_lkup\" ls2_lflows | sed 's/table=../table=??/' | sort], [0], [dnl\n table=??(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)\n- table=??(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n+ table=??(ls_in_l2_lkup ), priority=110 , match=((eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4) && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:02:01), action=(outport = \"ls2-ro2\"; output;)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:02:02), action=(outport = \"vm2\"; output;)\n table=??(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = \"_MC_flood\"; output;)\n@@ -5111,7 +5111,7 @@ check ovn-nbctl --wait=sb lr-nat-add ro2 snat 20.0.0.200 192.168.2.200/30\n ovn-sbctl lflow-list ls1 > ls1_lflows\n AT_CHECK([grep \"ls_in_l2_lkup\" ls1_lflows | sed 's/table=../table=??/' | sort], [0], [dnl\n table=??(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)\n- table=??(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n+ table=??(ls_in_l2_lkup ), priority=110 , match=((eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4) && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:01), action=(outport = \"ls1-ro1\"; output;)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:02), action=(outport = \"vm1\"; output;)\n table=??(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = \"_MC_flood\"; output;)\n@@ -5125,7 +5125,7 @@ AT_CHECK([grep \"ls_in_l2_lkup\" ls1_lflows | sed 's/table=../table=??/' | sort],\n ovn-sbctl lflow-list ls2 > ls2_lflows\n AT_CHECK([grep \"ls_in_l2_lkup\" ls2_lflows | sed 's/table=../table=??/' | sort], [0], [dnl\n table=??(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)\n- table=??(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n+ table=??(ls_in_l2_lkup ), priority=110 , match=((eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4) && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:02:01), action=(outport = \"ls2-ro2\"; output;)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:02:02), action=(outport = \"vm2\"; output;)\n table=??(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = \"_MC_flood\"; output;)\n@@ -5147,7 +5147,7 @@ check ovn-nbctl --wait=sb lr-nat-add ro2 snat 40.0.0.200 192.168.2.148/30\n ovn-sbctl lflow-list ls1 > ls1_lflows\n AT_CHECK([grep \"ls_in_l2_lkup\" ls1_lflows | sed 's/table=../table=??/' | sort], [0], [dnl\n table=??(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)\n- table=??(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n+ table=??(ls_in_l2_lkup ), priority=110 , match=((eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4) && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:01), action=(outport = \"ls1-ro1\"; output;)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:02), action=(outport = \"vm1\"; output;)\n table=??(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = \"_MC_flood\"; output;)\n@@ -5163,7 +5163,7 @@ AT_CHECK([grep \"ls_in_l2_lkup\" ls1_lflows | sed 's/table=../table=??/' | sort],\n ovn-sbctl lflow-list ls2 > ls2_lflows\n AT_CHECK([grep \"ls_in_l2_lkup\" ls2_lflows | sed 's/table=../table=??/' | sort], [0], [dnl\n table=??(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)\n- table=??(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n+ table=??(ls_in_l2_lkup ), priority=110 , match=((eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4) && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:02:01), action=(outport = \"ls2-ro2\"; output;)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:02:02), action=(outport = \"vm2\"; output;)\n table=??(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = \"_MC_flood\"; output;)\n@@ -5184,7 +5184,7 @@ ovn-nbctl --wait=sb lr-lb-add ro1 lb1\n ovn-sbctl lflow-list ls1 > ls1_lflows\n AT_CHECK([grep \"ls_in_l2_lkup\" ls1_lflows | sed 's/table=../table=??/' | sort], [0], [dnl\n table=??(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)\n- table=??(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n+ table=??(ls_in_l2_lkup ), priority=110 , match=((eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4) && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:01), action=(outport = \"ls1-ro1\"; output;)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:02), action=(outport = \"vm1\"; output;)\n table=??(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = \"_MC_flood\"; output;)\n@@ -5204,7 +5204,7 @@ ovn-nbctl --wait=sb lb-add lb1 192.168.4.100:80 10.0.0.10:80\n ovn-sbctl lflow-list ls1 > ls1_lflows\n AT_CHECK([grep \"ls_in_l2_lkup\" ls1_lflows | sed 's/table=../table=??/' | sort], [0], [dnl\n table=??(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)\n- table=??(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n+ table=??(ls_in_l2_lkup ), priority=110 , match=((eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4) && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:01), action=(outport = \"ls1-ro1\"; output;)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:02), action=(outport = \"vm1\"; output;)\n table=??(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = \"_MC_flood\"; output;)\n@@ -5230,7 +5230,7 @@ ovn-nbctl --wait=sb lrp-set-gateway-chassis ro1-ls1 chassis-1 30\n ovn-sbctl lflow-list ls1 > ls1_lflows\n AT_CHECK([grep \"ls_in_l2_lkup\" ls1_lflows | sed 's/table=../table=??/' | sort], [0], [dnl\n table=??(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)\n- table=??(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n+ table=??(ls_in_l2_lkup ), priority=110 , match=((eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4) && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:01), action=(outport = \"ls1-ro1\"; output;)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:02), action=(outport = \"vm1\"; output;)\n table=??(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = \"_MC_flood\"; output;)\n@@ -7172,7 +7172,7 @@ AT_CHECK([grep -e \"ls_in_acl.*eval\" -e \"ls_in_acl_hint\" lsflows | sed 's/table=.\n table=??(ls_in_acl_eval ), priority=2003 , match=(reg0[[8]] == 1 && (ip4 && icmp)), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=2004 , match=(reg0[[10]] == 1 && (ip4 && ip4.dst == 10.0.0.2)), action=(reg8[[17]] = 1; ct_commit { ct_mark.blocked = 1; }; next;)\n table=??(ls_in_acl_eval ), priority=2004 , match=(reg0[[9]] == 1 && (ip4 && ip4.dst == 10.0.0.2)), action=(reg8[[17]] = 1; next;)\n- table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;)\n+ table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;)\n table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;)\n@@ -7227,7 +7227,7 @@ AT_CHECK([grep -e \"ls_in_acl.*eval\" -e \"ls_in_acl_hint\" lsflows | sed 's/table=.\n table=??(ls_in_acl_eval ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_acl_eval ), priority=1 , match=(ip && !ct.est), action=(reg0[[1]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=1 , match=(ip && ct.est && ct_mark.blocked == 1), action=(reg0[[1]] = 1; reg8[[16]] = 1; next;)\n- table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;)\n+ table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;)\n table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;)\n@@ -7282,7 +7282,7 @@ AT_CHECK([grep -e \"ls_in_acl.*eval\" -e \"ls_in_acl_hint\" lsflows | sed 's/table=.\n table=??(ls_in_acl_eval ), priority=2002 , match=(reg0[[8]] == 1 && (ip4 && tcp)), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=2003 , match=(reg0[[7]] == 1 && (ip4 && icmp)), action=(reg8[[16]] = 1; reg0[[1]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=2003 , match=(reg0[[8]] == 1 && (ip4 && icmp)), action=(reg8[[16]] = 1; next;)\n- table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;)\n+ table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;)\n table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;)\n@@ -7573,7 +7573,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_eval ), priority=65535, match=(1), action=(next;)\n table=??(ls_in_acl_hint ), priority=65535, match=(1), action=(next;)\n table=??(ls_in_pre_acl ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=??(ls_out_acl_action ), priority=0 , match=(1), action=(next;)\n table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_out_acl_eval ), priority=65535, match=(1), action=(next;)\n@@ -7598,7 +7598,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_eval ), priority=65535, match=(1), action=(next;)\n table=??(ls_in_acl_hint ), priority=65535, match=(1), action=(next;)\n table=??(ls_in_pre_acl ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=??(ls_out_acl_action ), priority=0 , match=(1), action=(next;)\n table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_out_acl_eval ), priority=65535, match=(1), action=(next;)\n@@ -7623,7 +7623,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_eval ), priority=65535, match=(1), action=(next;)\n table=??(ls_in_acl_hint ), priority=65535, match=(1), action=(next;)\n table=??(ls_in_pre_acl ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=??(ls_out_acl_action ), priority=0 , match=(1), action=(next;)\n table=??(ls_out_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_out_acl_eval ), priority=65535, match=(1), action=(next;)\n@@ -7656,11 +7656,11 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_after_lb_eval), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_acl_eval ), priority=1001 , match=((ip4 && tcp)), action=(reg8[[16]] = 1; next;)\n- table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;)\n+ table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_hint ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_pre_acl ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=??(ls_out_acl_action ), priority=0 , match=(1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; next;)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[16]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; next;)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[17]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; /* drop */)\n@@ -7693,11 +7693,11 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_after_lb_eval), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_acl_eval ), priority=1001 , match=((ip4 && tcp)), action=(reg8[[16]] = 1; next;)\n- table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;)\n+ table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_hint ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_pre_acl ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=??(ls_out_acl_action ), priority=0 , match=(1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; next;)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[16]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; next;)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[17]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; /* drop */)\n@@ -7730,11 +7730,11 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_after_lb_eval), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_acl_eval ), priority=1001 , match=((ip4 && tcp)), action=(reg8[[16]] = 1; next;)\n- table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;)\n+ table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_hint ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_pre_acl ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=??(ls_out_acl_action ), priority=0 , match=(1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; /* drop */)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[16]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; next;)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[17]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; /* drop */)\n@@ -7771,7 +7771,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_eval ), priority=1 , match=(ip && ct.est && ct_mark.blocked == 1), action=(reg0[[1]] = 1; reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=1001 , match=(reg0[[7]] == 1 && (ip4 && tcp)), action=(reg8[[16]] = 1; reg0[[1]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=1001 , match=(reg0[[8]] == 1 && (ip4 && tcp)), action=(reg8[[16]] = 1; next;)\n- table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;)\n+ table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;)\n table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;)\n@@ -7786,7 +7786,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_hint ), priority=7 , match=(ct.new && !ct.est), action=(reg0[[7]] = 1; reg0[[9]] = 1; next;)\n table=??(ls_in_pre_acl ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_pre_acl ), priority=100 , match=(ip), action=(reg0[[0]] = 1; next;)\n- table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=??(ls_in_pre_acl ), priority=110 , match=(eth.mcast), action=(next;)\n table=??(ls_in_pre_acl ), priority=110 , match=(nd || nd_rs || nd_ra || mldv1 || mldv2 || (udp && udp.src == 546 && udp.dst == 547)), action=(next;)\n table=??(ls_out_acl_action ), priority=0 , match=(1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; /* drop */)\n@@ -7840,11 +7840,11 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_after_lb_eval), priority=1001 , match=((ip4 && tcp)), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_after_lb_eval), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;)\n+ table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_hint ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_pre_acl ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=??(ls_out_acl_action ), priority=0 , match=(1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; next;)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[16]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; next;)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[17]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; /* drop */)\n@@ -7877,11 +7877,11 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_after_lb_eval), priority=1001 , match=((ip4 && tcp)), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_after_lb_eval), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;)\n+ table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_hint ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_pre_acl ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=??(ls_out_acl_action ), priority=0 , match=(1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; next;)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[16]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; next;)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[17]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; /* drop */)\n@@ -7914,11 +7914,11 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_after_lb_eval), priority=1001 , match=((ip4 && tcp)), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_after_lb_eval), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;)\n+ table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_hint ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_pre_acl ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=??(ls_out_acl_action ), priority=0 , match=(1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; /* drop */)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[16]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; next;)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[17]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; /* drop */)\n@@ -7955,7 +7955,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_eval ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_acl_eval ), priority=1 , match=(ip && !ct.est), action=(next;)\n table=??(ls_in_acl_eval ), priority=1 , match=(ip && ct.est && ct_mark.blocked == 1), action=(reg0[[1]] = 1; reg8[[16]] = 1; next;)\n- table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;)\n+ table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;)\n table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;)\n@@ -7970,7 +7970,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_hint ), priority=7 , match=(ct.new && !ct.est), action=(reg0[[7]] = 1; reg0[[9]] = 1; next;)\n table=??(ls_in_pre_acl ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_pre_acl ), priority=100 , match=(ip), action=(reg0[[0]] = 1; next;)\n- table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=??(ls_in_pre_acl ), priority=110 , match=(eth.mcast), action=(next;)\n table=??(ls_in_pre_acl ), priority=110 , match=(nd || nd_rs || nd_ra || mldv1 || mldv2 || (udp && udp.src == 546 && udp.dst == 547)), action=(next;)\n table=??(ls_out_acl_action ), priority=0 , match=(1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; /* drop */)\n@@ -8023,11 +8023,11 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_after_lb_eval), priority=0 , match=(1), action=(next;)\n table=??(ls_in_acl_after_lb_eval), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;)\n+ table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_hint ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_pre_acl ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=??(ls_out_acl_action ), priority=0 , match=(1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; next;)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[16]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; next;)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[17]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; /* drop */)\n@@ -8060,11 +8060,11 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_after_lb_eval), priority=0 , match=(1), action=(next;)\n table=??(ls_in_acl_after_lb_eval), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;)\n+ table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_hint ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_pre_acl ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=??(ls_out_acl_action ), priority=0 , match=(1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; next;)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[16]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; next;)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[17]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; /* drop */)\n@@ -8097,11 +8097,11 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_after_lb_eval), priority=0 , match=(1), action=(next;)\n table=??(ls_in_acl_after_lb_eval), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;)\n+ table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(nd || nd_ra || nd_rs || mldv1 || mldv2), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_hint ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_pre_acl ), priority=0 , match=(1), action=(next;)\n- table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=??(ls_out_acl_action ), priority=0 , match=(1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; /* drop */)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[16]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; next;)\n table=??(ls_out_acl_action ), priority=1000 , match=(reg8[[17]] == 1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; /* drop */)\n@@ -8137,7 +8137,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_eval ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_acl_eval ), priority=1 , match=(ip && !ct.est), action=(next;)\n table=??(ls_in_acl_eval ), priority=1 , match=(ip && ct.est && ct_mark.blocked == 1), action=(reg0[[1]] = 1; reg8[[16]] = 1; next;)\n- table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac), action=(reg8[[16]] = 1; next;)\n+ table=??(ls_in_acl_eval ), priority=34000, match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(!ct.est && ct.rel && !ct.new && !ct.inv && ct_mark.blocked == 0), action=(reg0[[17]] = 1; reg8[[16]] = 1; ct_commit_nat;)\n table=??(ls_in_acl_eval ), priority=65532, match=(ct.est && !ct.rel && !ct.new && !ct.inv && ct.rpl && ct_mark.blocked == 0), action=(reg0[[9]] = 0; reg0[[10]] = 0; reg0[[17]] = 1; reg8[[16]] = 1; next;)\n table=??(ls_in_acl_eval ), priority=65532, match=(ct.inv || (ct.est && ct.rpl && ct_mark.blocked == 1)), action=(reg8[[17]] = 1; next;)\n@@ -8152,7 +8152,7 @@ AT_CHECK([ovn-sbctl dump-flows | grep -E \"ls_.*_acl\" | sed 's/table=../table=??/\n table=??(ls_in_acl_hint ), priority=7 , match=(ct.new && !ct.est), action=(reg0[[7]] = 1; reg0[[9]] = 1; next;)\n table=??(ls_in_pre_acl ), priority=0 , match=(1), action=(next;)\n table=??(ls_in_pre_acl ), priority=100 , match=(ip), action=(reg0[[0]] = 1; next;)\n- table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac), action=(next;)\n+ table=??(ls_in_pre_acl ), priority=110 , match=(eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4), action=(next;)\n table=??(ls_in_pre_acl ), priority=110 , match=(eth.mcast), action=(next;)\n table=??(ls_in_pre_acl ), priority=110 , match=(nd || nd_rs || nd_ra || mldv1 || mldv2 || (udp && udp.src == 546 && udp.dst == 547)), action=(next;)\n table=??(ls_out_acl_action ), priority=0 , match=(1), action=(reg8[[16]] = 0; reg8[[17]] = 0; reg8[[18]] = 0; /* drop */)\n@@ -8324,7 +8324,7 @@ sort | sed 's/table=../table=??/' ], [0], [dnl\n table=??(ls_out_apply_port_sec), priority=0 , match=(1), action=(output;)\n table=??(ls_out_apply_port_sec), priority=50 , match=(reg0[[15]] == 1), action=(drop;)\n table=??(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)\n- table=??(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n+ table=??(ls_in_l2_lkup ), priority=110 , match=((eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4) && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n table=??(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = \"_MC_flood\"; output;)\n table=??(ls_in_l2_unknown ), priority=0 , match=(1), action=(output;)\n table=??(ls_in_l2_unknown ), priority=50 , match=(outport == \"none\"), action=(drop;)\n@@ -8349,7 +8349,7 @@ sort | sed 's/table=../table=??/' ], [0], [dnl\n table=??(ls_out_apply_port_sec), priority=0 , match=(1), action=(output;)\n table=??(ls_out_apply_port_sec), priority=50 , match=(reg0[[15]] == 1), action=(drop;)\n table=??(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)\n- table=??(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n+ table=??(ls_in_l2_lkup ), priority=110 , match=((eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4) && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:01), action=(outport = \"sw0p1\"; output;)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:02), action=(outport = \"sw0p2\"; output;)\n table=??(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = \"_MC_flood\"; output;)\n@@ -8375,7 +8375,7 @@ sort | sed 's/table=../table=??/' ], [0], [dnl\n table=??(ls_out_apply_port_sec), priority=0 , match=(1), action=(output;)\n table=??(ls_out_apply_port_sec), priority=50 , match=(reg0[[15]] == 1), action=(drop;)\n table=??(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)\n- table=??(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n+ table=??(ls_in_l2_lkup ), priority=110 , match=((eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4) && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:01), action=(outport = \"sw0p1\"; output;)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:02), action=(outport = \"sw0p2\"; output;)\n table=??(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = \"_MC_flood\"; output;)\n@@ -8402,7 +8402,7 @@ sort | sed 's/table=../table=??/' ], [0], [dnl\n table=??(ls_out_apply_port_sec), priority=0 , match=(1), action=(output;)\n table=??(ls_out_apply_port_sec), priority=50 , match=(reg0[[15]] == 1), action=(drop;)\n table=??(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)\n- table=??(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n+ table=??(ls_in_l2_lkup ), priority=110 , match=((eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4) && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:01), action=(drop;)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:02), action=(outport = \"sw0p2\"; output;)\n table=??(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = \"_MC_flood\"; output;)\n@@ -8430,7 +8430,7 @@ sort | sed 's/table=../table=??/' ], [0], [dnl\n table=??(ls_out_apply_port_sec), priority=110 , match=(outport == \"localnetport\" && inport == \"sw0p2\"), action=(set_queue(10); output;)\n table=??(ls_out_apply_port_sec), priority=50 , match=(reg0[[15]] == 1), action=(drop;)\n table=??(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)\n- table=??(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n+ table=??(ls_in_l2_lkup ), priority=110 , match=((eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4) && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:01), action=(drop;)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:02), action=(outport = \"sw0p2\"; output;)\n table=??(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = \"_MC_flood\"; output;)\n@@ -8462,7 +8462,7 @@ sort | sed 's/table=../table=??/' ], [0], [dnl\n table=??(ls_out_apply_port_sec), priority=110 , match=(outport == \"localnetport\" && inport == \"sw0p2\"), action=(set_queue(10); output;)\n table=??(ls_out_apply_port_sec), priority=50 , match=(reg0[[15]] == 1), action=(drop;)\n table=??(ls_in_l2_lkup ), priority=0 , match=(1), action=(outport = get_fdb(eth.dst); next;)\n- table=??(ls_in_l2_lkup ), priority=110 , match=(eth.dst == $svc_monitor_mac && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n+ table=??(ls_in_l2_lkup ), priority=110 , match=((eth.dst == $svc_monitor_mac || ip4.dst == $svc_monitor_ip4) && (tcp || icmp || icmp6)), action=(handle_svc_check(inport);)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:01), action=(outport = \"sw0p1\"; output;)\n table=??(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:02), action=(outport = \"sw0p2\"; output;)\n table=??(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = \"_MC_flood\"; output;)\n", "prefixes": [ "ovs-dev", "v2" ] }