From patchwork Tue Jun 23 08:49:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jinjun Gao X-Patchwork-Id: 1315004 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=140.211.166.138; helo=whitealder.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=vmware.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=vmware.com header.i=@vmware.com header.a=rsa-sha256 header.s=selector2 header.b=u+MBrOBt; dkim-atps=neutral Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 49rg2W6Zwyz9sRN for ; Tue, 23 Jun 2020 18:49:55 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 0F03287F69; Tue, 23 Jun 2020 08:49:54 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lGu9d3yQSwFu; Tue, 23 Jun 2020 08:49:52 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by whitealder.osuosl.org (Postfix) with ESMTP id D1B1387F07; Tue, 23 Jun 2020 08:49:52 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id BDDD4C0891; Tue, 23 Jun 2020 08:49:52 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 92AE4C016F for ; Tue, 23 Jun 2020 08:49:51 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 8003987F69 for ; Tue, 23 Jun 2020 08:49:51 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 38hM4fOcSmoS for ; Tue, 23 Jun 2020 08:49:50 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2081.outbound.protection.outlook.com [40.107.94.81]) by whitealder.osuosl.org (Postfix) with ESMTPS id 1A9B487F07 for ; Tue, 23 Jun 2020 08:49:50 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BuQuQnnSemXxKT+VHI08OPjpzJH4gNXDrKZd3MPVvTZ+WZ8pD3r20f8V2zu5InWoPiME6X7N6K8iWX+jSY7+sAnzvMa54je6po/dgfXQgf1s+kM5qg9Dg8089iCXta9hEtLO2QY89YD61lR1eHSZss9wiFWtoUwTh2Snj0ABmQLI9ZmS4LxvlxTA4LJT0urURVO/hjSlClOqB+N/25dRNQcwy1Oi+2nF5KJle2csjTac0T7BVK65DNS+XdoQe268tCPhVVvk7GHaybRFkk+K9lsz0lIydYGBgouzCAlrruUg/KEY9ZLXmkUjAOuERkZ6JBztdhkb2VZGXA7MI0pZZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RL7DyQn2ioeJd96tyhqevg2NZ94SjmYQXnatP4a1lcs=; b=jbBLpIhktZ+XljDkUmWzvINoJ6j7Le0Xis87W95uiPYo0AEh+f3ZBnEp584gOC3OTgZlu8yxC/ZdDRqUbmmjYM2VOjANwp3/MAOY0DSLcmVdLA2hbF7nNXIf7QXk4j8wESembkzkRwlqjKpIWEgo7ikfwSkDqmT4ZMNv0ak7tuh3qZJ2pRV5N+ozNVGzdy9Do2NlCvG2IcgHHM1h1KXfAsrHxyD/tIDaw6UbKD/XYDr/J4WYM4MIOBJ6RYWh31zagxLU2Ho2aV7F/Zy9i2u2elmXMjbYxX/ss9BIaaENGhqcirWBs4z5REs5uyv09XW+YfdkiL20ykUyKlO/ykSm5A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RL7DyQn2ioeJd96tyhqevg2NZ94SjmYQXnatP4a1lcs=; b=u+MBrOBtgH1vgXy0yOX5Pwpz7MVbTJSb5hQp9f1/Wiyz/MFyDqqN89WBSyHJRUarBmoaXArZ9UO6pQiZBtZfCPWfxGUwUYC9n3lLA49mwm1CzKarDTqcZtYTp0urRTkNdHfGAR1zwvxDlNIYJaZ0prx6ZxUnN28hBq+XLgt3TA8= Received: from DM6PR05MB5434.namprd05.prod.outlook.com (2603:10b6:5:d::17) by DM6PR05MB4586.namprd05.prod.outlook.com (2603:10b6:5:9c::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3131.12; Tue, 23 Jun 2020 08:49:45 +0000 Received: from DM6PR05MB5434.namprd05.prod.outlook.com ([fe80::50e2:4551:7d18:222f]) by DM6PR05MB5434.namprd05.prod.outlook.com ([fe80::50e2:4551:7d18:222f%3]) with mapi id 15.20.3131.018; Tue, 23 Jun 2020 08:49:45 +0000 From: Jinjun Gao To: "dev@openvswitch.org" , Alin Serdean Thread-Topic: [ovs-dev] datapath-windows: Add CTA_HELP and CTA_TUPLE_MASTER Thread-Index: AQHWSTr/bHW5gpOg9Eq99mD64R6oqg== Date: Tue, 23 Jun 2020 08:49:45 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: openvswitch.org; dkim=none (message not signed) header.d=none; openvswitch.org; dmarc=none action=none header.from=vmware.com; x-originating-ip: [66.170.99.1] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f0581afa-6e2a-4a28-fafc-08d817526139 x-ms-traffictypediagnostic: DM6PR05MB4586: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7219; x-forefront-prvs: 04433051BF x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: W0AaLhNDOK8/f8a/ZuB6nHLKAVTFdQa6J8734ZHPEyQZGaA7gLD3FxXPt77vWa5wYDS5NUODilBGXwIRuFEJ4nD3n6N1xOt0/A1QecgokfA7dnPrwD7B1VmixUCPW0Yrqy+Yt6nTJ0m/C5z3oqijKYDXdVpyHiJJW7Q5ytmAaIzLXsOLHNuDyLS2zZOTCbITEY/3X7RM2WbLm9yS5HvHv7i4yGMjZ4pRYvk4Ybfe37FEJrMhHFgRyt0IoP7TYf+Rte3IfjX0bK/0n4RSft2d+jVXltkH8UwPjEEoSAwjmhhk/Tvc+HyNiwr2tgwVjy+V7AgnpENyskPkRXWQIUWEJg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR05MB5434.namprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(136003)(396003)(39860400002)(346002)(376002)(366004)(66476007)(26005)(86362001)(71200400001)(76116006)(83380400001)(9686003)(52536014)(110136005)(66946007)(66446008)(66556008)(8676002)(64756008)(478600001)(107886003)(55016002)(5660300002)(19627405001)(33656002)(4326008)(6506007)(316002)(2906002)(186003)(8936002)(7696005); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: Pie6noRHrUjyHubbNtj1LKaZP9J+2t3+dID0Gkcf4nz0CU/1zwnJXrvd0bFc3v9YQYu08OnRw+Ck5Xtl5d7KjetVwOGaeIt5R7fz/Tdds1Jzdb7NQ3o5/sE3etveTr6dO645z0yp8JCD001QrTp2M43RbU4iiOV3IKq2Hht0Z8HwGkDcwCciFtpsBoXcFh1r5zycA2GoLma6TUrqU9HFkqIokUFGTNSA07mzQotDOmJSjWLQ/GGKIud2hYAlWu8L3j86yqknctrrgSDa/PWUR2nt22wJ/U14rI40Ft7fu6+E2WqzVMlGdscP3gIHdgWdAQu65zanjJM356s1caT3G71EQI8ldMTJuJ3NSMT/M5wcaXgoiTOZt4xIKK/C6wBbyjR0w3AOzeBE3qSk6Va3ybNrZ+YRNe/27kAIRrDDaJKHq0wviAAiRgSpM50SnToM1Hva7wfHALFxm2loDr/lYJVCUp90u4u9pUwVBTKeGMQ= MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR05MB5434.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f0581afa-6e2a-4a28-fafc-08d817526139 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jun 2020 08:49:45.7303 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Gu/jrcWOIN79S3DnmnHUTyhGM1UVOC4UemmIOuVwy915apcGYTK374XfqMeQanJffQOLZV6bT8weXhPQUcz8GA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR05MB4586 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [ovs-dev] datapath-windows: Add CTA_HELP and CTA_TUPLE_MASTER X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" Add helper and master if existing to a conntrack entry: 1, For CTA_HELP, only support FTP/TFTP; 2, For CTA_TUPLE_MASTER, only support FTP. Signed-off-by: Jinjun Gao --- datapath-windows/ovsext/Conntrack-related.c | 1 - datapath-windows/ovsext/Conntrack.c | 40 ++++++++++++++++++++++++++--- datapath-windows/ovsext/Conntrack.h | 1 + 3 files changed, 37 insertions(+), 5 deletions(-) -- 1.8.5.6 diff --git a/datapath-windows/ovsext/Conntrack-related.c b/datapath-windows/ovsext/Conntrack-related.c index 950be98..3bdd52f 100644 --- a/datapath-windows/ovsext/Conntrack-related.c +++ b/datapath-windows/ovsext/Conntrack-related.c @@ -48,7 +48,6 @@ OvsCtRelatedKeyAreSame(OVS_CT_KEY incomingKey, OVS_CT_KEY entryKey) /* FTP ACTIVE - Server initiates the connection */ if ((incomingKey.src.addr.ipv4 == entryKey.src.addr.ipv4) && - (incomingKey.src.port == entryKey.src.port) && (incomingKey.dst.addr.ipv4 == entryKey.dst.addr.ipv4) && (incomingKey.dst.port == entryKey.dst.port) && (incomingKey.dl_type == entryKey.dl_type) && diff --git a/datapath-windows/ovsext/Conntrack.c b/datapath-windows/ovsext/Conntrack.c index ba56116..864095f 100644 --- a/datapath-windows/ovsext/Conntrack.c +++ b/datapath-windows/ovsext/Conntrack.c @@ -480,6 +480,9 @@ OvsCtEntryDelete(POVS_CT_ENTRY entry, BOOLEAN forceDelete) RemoveEntryList(&entry->link); OVS_RELEASE_SPIN_LOCK(&(entry->lock), irql); NdisFreeSpinLock(&(entry->lock)); + if (entry->helper_name) { + OvsFreeMemoryWithTag(entry->helper_name, OVS_CT_POOL_TAG); + } OvsFreeMemoryWithTag(entry, OVS_CT_POOL_TAG); NdisInterlockedDecrement((PLONG)&ctTotalEntries); return; @@ -956,8 +959,6 @@ OvsCtExecute_(OvsForwardingContext *fwdCtx, if (OvsDetectFtpPacket(key)) { /* FTP parser will always be loaded */ - UNREFERENCED_PARAMETER(helper); - status = OvsCtHandleFtp(curNbl, key, layers, currentTime, entry, (ntohs(key->ipKey.l4.tpDst) == IPPORT_FTP)); if (status != NDIS_STATUS_SUCCESS) { @@ -965,6 +966,17 @@ OvsCtExecute_(OvsForwardingContext *fwdCtx, } } + if (!entry->helper_name && helper) { + entry->helper_name = OvsAllocateMemoryWithTag(strlen(helper) + 1, + OVS_CT_POOL_TAG); + if (!entry->helper_name) { + OVS_LOG_ERROR("Error while allocating memory"); + return NDIS_STATUS_RESOURCES; + } + + memcpy(entry->helper_name, helper, strlen(helper) + 1); + } + /* Add original tuple information to flow Key */ if (entry->key.dl_type == ntohs(ETH_TYPE_IPV4)) { if (entry->parent != NULL) { @@ -1039,8 +1051,8 @@ OvsExecuteConntrackAction(OvsForwardingContext *fwdCtx, if (helper == NULL) { return NDIS_STATUS_INVALID_PARAMETER; } - if (strcmp("ftp", helper) != 0) { - /* Only support FTP */ + if (strcmp("ftp", helper) != 0 && strcmp("tftp", helper) != 0) { + /* Only support FTP/TFTP */ return NDIS_STATUS_NOT_SUPPORTED; } break; @@ -1680,6 +1692,26 @@ OvsCreateNlMsgFromCtEntry(POVS_CT_ENTRY entry, } } + if (entry->helper_name) { + UINT32 offset; + offset = NlMsgStartNested(&nlBuf, CTA_HELP); + if (!offset) { + return NDIS_STATUS_FAILURE; + } + if (!NlMsgPutTailString(&nlBuf, CTA_HELP_NAME, entry->helper_name)) { + return STATUS_INVALID_BUFFER_SIZE; + } + NlMsgEndNested(&nlBuf, offset); + } + + if (entry->parent) { + status = MapCtKeyTupleToNl(&nlBuf, CTA_TUPLE_MASTER, + &((POVS_CT_ENTRY)entry->parent)->key); + if (status != NDIS_STATUS_SUCCESS) { + return STATUS_UNSUCCESSFUL; + } + } + /* CTA_STATUS is required but not implemented. Default to 0 */ if (!NlMsgPutTailU32(&nlBuf, CTA_STATUS, 0)) { return STATUS_INVALID_BUFFER_SIZE; diff --git a/datapath-windows/ovsext/Conntrack.h b/datapath-windows/ovsext/Conntrack.h index bc6580d..23b0058 100644 --- a/datapath-windows/ovsext/Conntrack.h +++ b/datapath-windows/ovsext/Conntrack.h @@ -108,6 +108,7 @@ typedef struct OVS_CT_ENTRY { struct ovs_key_ct_labels labels; NAT_ACTION_INFO natInfo; PVOID parent; /* Points to main connection */ + PCHAR helper_name; } OVS_CT_ENTRY, *POVS_CT_ENTRY; typedef struct OVS_CT_REL_ENTRY {