From patchwork Thu Mar 2 22:05:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shashank Ram X-Patchwork-Id: 734833 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 3vZ5wN57jSz9s7j for ; Fri, 3 Mar 2017 09:05:24 +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="YCjc4p0P"; dkim-atps=neutral Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 95BDBB80; Thu, 2 Mar 2017 22:05: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 AC18EB7C for ; Thu, 2 Mar 2017 22:05:19 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0077.outbound.protection.outlook.com [104.47.34.77]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id B4D981D6 for ; Thu, 2 Mar 2017 22:05: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=zyya/krW6sRaxeWhr5q4PAWNEHvlhobpB6L1EvPEciQ=; b=YCjc4p0PdioYGO79OLsp2Q/OXWbEwmNo7jl8AujB2eUFZ9ulR/JCs6b0xFMqQNLPAPGJTvpdCX0MArFzgsaIFHtqE9mo0xdfmW+TqWF32f9p9kpLjpRR7Pu9QGsnjxFzDOnszff01DjLMKBXxU2WitKeZSr28J2HgFeMRc85WyE= Received: from DM5PR05MB3193.namprd05.prod.outlook.com (10.173.219.139) by CO2PR0501MB823.namprd05.prod.outlook.com (10.141.244.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.2; Thu, 2 Mar 2017 22:05:09 +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.0947.012; Thu, 2 Mar 2017 22:05:07 +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: AQHSk53MfnHOwjG1REKFNJ0eh/B/bKGCGiKw Date: Thu, 2 Mar 2017 22:05:06 +0000 Message-ID: References: <20170302214103.221564-1-vsairam@vmware.com> In-Reply-To: <20170302214103.221564-1-vsairam@vmware.com> 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: [25.173.128.132] x-microsoft-exchange-diagnostics: 1; CO2PR0501MB823; 7:wqVZQFWLqNkE6XqN51NOvcyVWQNzID2z/3omXvirggnz/WT0DkQ2NijZBovHOgI5/odVYdoMBCMFZlj5N3HKRhejCvHZXQY4ty8j6Rc0CnipJpDF8PcE5ow8Uv0IyJedBXvzXxAx7PHAANwxcU8d7+i1ct9UiXgIfynfisRTWkgVd1XtYh6NKoDdJo/dyAzu/vfnGTklXlVPw0Mk9IuaOtJMOPHOpihhE6kODjNUZk/4yc4ebZVBN1KAexyvz5fMjkGAg+dRefbHL6gQq2hUbUKGKuZFOpLinvVMvsF2sDRXSPPJD6sKAm76Vknkb5dU4jHKUensjIzKB5u38Y2a/g==; 20:W0F6Rr49GitHv789a3BMd8FSYxyUH/zb/5N255N/O0KRibhpZYvvqQxosqLXguuX7a/Z/p7wpC9FCjROfGoP0D5ZLtONdNKB3Xh2F4GGPtGa7u/GBxnpOs0SklKz0slz+aDmmjbb/B2fZL9Y63ScESLCzd/PLjQERI6/YOpZBGk= x-forefront-antispam-report: SFV:SKI; SCL:-1SFV:NSPM; SFS:(10009020)(7916002)(39450400003)(377454003)(25786008)(38730400002)(450100001)(5660300001)(9686003)(74316002)(55016002)(54896002)(81166006)(86362001)(99286003)(7906003)(3846002)(6436002)(6116002)(6246003)(6506006)(606005)(2950100002)(102836003)(7736002)(7696004)(53936002)(229853002)(3280700002)(54356999)(236005)(92566002)(8936002)(6306002)(3660700001)(106116001)(122556002)(77096006)(2900100001)(76176999)(50986999)(189998001)(66066001)(2906002)(2501003)(33656002); DIR:OUT; SFP:1101; SCL:1; SRVR:CO2PR0501MB823; H:DM5PR05MB3193.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; x-ms-office365-filtering-correlation-id: 53ccc65c-f7d8-4604-8d76-08d461b82fcf x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:CO2PR0501MB823; 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)(8121501046)(5005006)(3002001)(10201501046)(6041248)(20161123564025)(20161123562025)(20161123560025)(20161123555025)(20161123558025)(6072148); SRVR:CO2PR0501MB823; BCL:0; PCL:0; RULEID:; SRVR:CO2PR0501MB823; x-forefront-prvs: 023495660C spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Mar 2017 22:05:06.7428 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR0501MB823 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 Thanks Sai for the change. I was wondering if you could add a helper function to lookup the OVS_CT_ENTRY that got added to the OvsConntrackKeyLookupCtx list, instead of passing a boolean around to functions. i.e replace "entryCreated" with "IsEntryCreated()". Thanks, Shashank 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;