From patchwork Tue Mar 7 18:32:16 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shashank Ram X-Patchwork-Id: 736323 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3vd4yG3BSYz9sN9 for ; Wed, 8 Mar 2017 05:32:22 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=onevmw.onmicrosoft.com header.i=@onevmw.onmicrosoft.com header.b="ZR5CbEoz"; dkim-atps=neutral Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id D0161B76; Tue, 7 Mar 2017 18:32:20 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id E6FA3B6B for ; Tue, 7 Mar 2017 18:32:19 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0086.outbound.protection.outlook.com [104.47.32.86]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 9FD9890 for ; Tue, 7 Mar 2017 18:32:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=onevmw.onmicrosoft.com; s=selector1-vmware-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=4cSJULed8hdIHttX+0SBThaijF6oiWCzOVaXVBX/m+4=; b=ZR5CbEozaJhGvBrJviypVJmJOdBtKy0v5UJCR5vsRx5ezlmqk+60zSqMSGOlQH2MTlmnCPjpZ0rCxhAy1QuqTBKjspglTG5rERoAN0Zm83es2TJ3npXEsoJ9uqe24eKxExBxQkQA5RyzM1YyE7PZOuq/WKnG3nDyejwCPNzpY7E= Received: from DM5PR05MB3193.namprd05.prod.outlook.com (10.173.219.139) by DM2PR0501MB825.namprd05.prod.outlook.com (10.242.115.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.2; Tue, 7 Mar 2017 18:32:17 +0000 Received: from DM5PR05MB3193.namprd05.prod.outlook.com ([10.173.219.139]) by DM5PR05MB3193.namprd05.prod.outlook.com ([10.173.219.139]) with mapi id 15.01.0961.014; Tue, 7 Mar 2017 18:32:16 +0000 From: Shashank Ram To: Sairam Venugopal , "dev@openvswitch.org" Thread-Topic: [ovs-dev] [PATCH] datapath-windows: Trigger conntrack event after setting mark and label Thread-Index: AQHSl28AwV76KhhLl0qbDiAjplFmcaGJsvKG Date: Tue, 7 Mar 2017 18:32:16 +0000 Message-ID: References: <20170302214103.221564-1-vsairam@vmware.com> , In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: vmware.com; dkim=none (message not signed) header.d=none; vmware.com; dmarc=none action=none header.from=vmware.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [208.91.1.34] x-microsoft-exchange-diagnostics: 1; DM2PR0501MB825; 7:5xihHxtPTt3SSwvTpUkHP9//q7IPz7Bh7HGQEKcYruOjRqrnOqLl6ZBNgACVcpQn937sSPa+LAIm4aBMZUqFiMlQt+XLNS9PO4o61sUnMpPLvCN2zPOMyc2lDwkEV0lPjvbnVFR7aKFQ1ydVMS5auWoDnQg8a8KmqSZF8GbRKs4k4Dsj8kmRUxW0Bda8tz/q8Lrp19DLHbJPz2xHpgb6OJhjUqo4ZXfI4z2ndbNoP7Hmcl+n5GOwa0piDfS+K8Bh7Iy2YH03P+tj+obUR2NA8DloGJzUlJ3y0xG2rkr7MrXRRUOkS9e+ertFkpKv1W3T1H/ygB9/rKmwu8ASZK6f6Q==; 20:DFB9o3yJP4Cti9GnHu6KRJRE77BeE+stzw/SuVtgeVvEILCuxNFdYSVZoKNyI7cHLpubdTZccTvQNV2Zg890dUC1gXTP8JzL0qyQ7OWCMEiJ5NN0FcLTuYDXr+wxAr0tq1SKnsD46lMdU2NCQznbjAf4zT5Ju/Y7IwLJgWKSl2M= x-forefront-antispam-report: SFV:SKI; SCL:-1SFV:NSPM; SFS:(10009020)(7916002)(39450400003)(39410400002)(39830400002)(377454003)(6116002)(76176999)(3280700002)(55016002)(7696004)(66066001)(25786008)(7906003)(99286003)(19627405001)(102836003)(2900100001)(6246003)(8936002)(7736002)(8676002)(77096006)(6306002)(236005)(53936002)(53546006)(3846002)(74316002)(33656002)(5660300001)(9686003)(2950100002)(229853002)(38730400002)(122556002)(6606003)(6506006)(54896002)(86362001)(2501003)(189998001)(106116001)(50986999)(3660700001)(6436002)(606005)(54356999)(2906002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR0501MB825; H:DM5PR05MB3193.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; x-ms-office365-filtering-correlation-id: be4c1ff9-4237-4e96-6587-08d465884803 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:DM2PR0501MB825; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(61668805478150)(158342451672863)(10436049006162)(216315784871565)(271806183753584)(788757137089); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123558025)(20161123564025)(20161123562025)(20161123555025)(20161123560025)(6072148); SRVR:DM2PR0501MB825; BCL:0; PCL:0; RULEID:; SRVR:DM2PR0501MB825; x-forefront-prvs: 0239D46DB6 spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Mar 2017 18:32:16.3451 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0501MB825 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HTML_MESSAGE, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org X-Content-Filtered-By: Mailman/MimeDel 2.1.12 Subject: Re: [ovs-dev] [PATCH] datapath-windows: Trigger conntrack event after setting mark and label X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Discussed with Sai offline. Since the Event needs to be fired just the first time the CtEntry is created, he is using a bool for it. Acked-by: Shashank Ram diff --git a/datapath-windows/ovsext/Conntrack.c b/datapath-windows/ovsext/Conntrack.c index d1be480..9f41861 100644 --- a/datapath-windows/ovsext/Conntrack.c +++ b/datapath-windows/ovsext/Conntrack.c @@ -168,7 +168,7 @@ OvsCtAddEntry(POVS_CT_ENTRY entry, OvsConntrackKeyLookupCtx *ctx, UINT64 now) entry->timestampStart = now; InsertHeadList(&ovsConntrackTable[ctx->hash & CT_HASH_TABLE_MASK], &entry->link); - OvsPostCtEventEntry(entry, OVS_EVENT_CT_NEW); + ctTotalEntries++; } @@ -179,9 +179,11 @@ OvsCtEntryCreate(PNET_BUFFER_LIST curNbl, OvsConntrackKeyLookupCtx *ctx, OvsFlowKey *key, BOOLEAN commit, - UINT64 currentTime) + UINT64 currentTime, + BOOLEAN *entryCreated) { POVS_CT_ENTRY entry = NULL; + *entryCreated = FALSE; UINT32 state = 0; switch (ipProto) { @@ -211,6 +213,7 @@ OvsCtEntryCreate(PNET_BUFFER_LIST curNbl, entry->parent = parentEntry; } OvsCtAddEntry(entry, ctx, currentTime); + *entryCreated = TRUE; } OvsCtUpdateFlowKey(key, state, ctx->key.zone, 0, NULL); @@ -232,6 +235,7 @@ OvsCtEntryCreate(PNET_BUFFER_LIST curNbl, return NULL; } OvsCtAddEntry(entry, ctx, currentTime); + *entryCreated = TRUE; } OvsCtUpdateFlowKey(key, state, ctx->key.zone, 0, NULL); @@ -246,6 +250,7 @@ OvsCtEntryCreate(PNET_BUFFER_LIST curNbl, return NULL; } OvsCtAddEntry(entry, ctx, currentTime); + *entryCreated = TRUE; } OvsCtUpdateFlowKey(key, state, ctx->key.zone, 0, NULL); @@ -525,10 +530,12 @@ OvsProcessConntrackEntry(PNET_BUFFER_LIST curNbl, OvsFlowKey *key, UINT16 zone, BOOLEAN commit, - UINT64 currentTime) + UINT64 currentTime, + BOOLEAN *entryCreated) { POVS_CT_ENTRY entry = ctx->entry; UINT32 state = 0; + *entryCreated = FALSE; /* If an entry was found, update the state based on TCP flags */ if (ctx->related) { @@ -555,7 +562,8 @@ OvsProcessConntrackEntry(PNET_BUFFER_LIST curNbl, OvsCtEntryDelete(ctx->entry); ctx->entry = NULL; entry = OvsCtEntryCreate(curNbl, key->ipKey.nwProto, l4Offset, - ctx, key, commit, currentTime); + ctx, key, commit, currentTime, + entryCreated); if (!entry) { return NULL; } @@ -644,17 +652,19 @@ OvsCtExecute_(PNET_BUFFER_LIST curNbl, /* Lookup Conntrack entries for a matching entry */ entry = OvsCtLookup(&ctx); - + BOOLEAN entryCreated = FALSE; if (!entry) { /* If no matching entry was found, create one and add New state */ entry = OvsCtEntryCreate(curNbl, key->ipKey.nwProto, layers->l4Offset, &ctx, - key, commit, currentTime); + key, commit, currentTime, + &entryCreated); } else { /* Process the entry and update CT flags */ OvsCtIncrementCounters(entry, ctx.reply, curNbl); entry = OvsProcessConntrackEntry(curNbl, layers->l4Offset, &ctx, key, - zone, commit, currentTime); + zone, commit, currentTime, + &entryCreated); } if (entry && mark) { @@ -676,6 +686,10 @@ OvsCtExecute_(PNET_BUFFER_LIST curNbl, } } + if (entryCreated && entry) { + OvsPostCtEventEntry(entry, OVS_EVENT_CT_NEW); + } + NdisReleaseRWLock(ovsConntrackLockObj, &lockState); return status;