From patchwork Fri Dec 16 22:28:10 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sairam Venugopal X-Patchwork-Id: 706617 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 3tgQ6Q20mwz9t2N for ; Sat, 17 Dec 2016 09:32:14 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 24CFBBCD; Fri, 16 Dec 2016 22:28:19 +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 BE166BC4 for ; Fri, 16 Dec 2016 22:28:17 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from EX13-EDG-OU-001.vmware.com (ex13-edg-ou-001.vmware.com [208.91.0.189]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id E670A1B8 for ; Fri, 16 Dec 2016 22:28:15 +0000 (UTC) Received: from sc9-mailhost1.vmware.com (10.113.161.71) by EX13-EDG-OU-001.vmware.com (10.113.208.155) with Microsoft SMTP Server id 15.0.1156.6; Fri, 16 Dec 2016 14:27:05 -0800 Received: from vsairam-w01.vmware.com (htb-1s-eng-dhcp42.eng.vmware.com [10.33.78.42]) by sc9-mailhost1.vmware.com (Postfix) with ESMTP id 0E627182DB; Fri, 16 Dec 2016 14:28:15 -0800 (PST) From: Sairam Venugopal To: Date: Fri, 16 Dec 2016 14:28:10 -0800 Message-ID: <20161216222812.128904-3-vsairam@vmware.com> X-Mailer: git-send-email 2.9.0.windows.1 In-Reply-To: <20161216222812.128904-1-vsairam@vmware.com> References: <20161216222812.128904-1-vsairam@vmware.com> MIME-Version: 1.0 Received-SPF: None (EX13-EDG-OU-001.vmware.com: vsairam@vmware.com does not designate permitted sender hosts) X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_NONE, RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Subject: [ovs-dev] [PATCH v3 2/4] datapath-windows: Cleanup Conntrack definitions and introduce related entries 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 Consolidate the reusable structs and includes. Introduce the new OVS_CT_REL_ENTRY to track related connections. Signed-off-by: Sairam Venugopal Acked-by: Alin Gabriel Serdean --- datapath-windows/ovsext/Conntrack.c | 12 --------- datapath-windows/ovsext/Conntrack.h | 51 ++++++++++++++++++++++++++++++------- 2 files changed, 42 insertions(+), 21 deletions(-) diff --git a/datapath-windows/ovsext/Conntrack.c b/datapath-windows/ovsext/Conntrack.c index 47dba9d..70c32a4 100644 --- a/datapath-windows/ovsext/Conntrack.c +++ b/datapath-windows/ovsext/Conntrack.c @@ -14,27 +14,15 @@ * limitations under the License. */ -#ifdef OVS_DBG_MOD -#undef OVS_DBG_MOD -#endif -#define OVS_DBG_MOD OVS_DBG_CONTRK - #include "Conntrack.h" #include "Jhash.h" #include "PacketParser.h" -#include "Debug.h" #include "Event.h" #define WINDOWS_TICK 10000000 #define SEC_TO_UNIX_EPOCH 11644473600LL #define SEC_TO_NANOSEC 1000000000LL -typedef struct _OVS_CT_THREAD_CTX { - KEVENT event; - PVOID threadObject; - UINT32 exit; -} OVS_CT_THREAD_CTX, *POVS_CT_THREAD_CTX; - KSTART_ROUTINE ovsConntrackEntryCleaner; static PLIST_ENTRY ovsConntrackTable; static OVS_CT_THREAD_CTX ctThreadCtx; diff --git a/datapath-windows/ovsext/Conntrack.h b/datapath-windows/ovsext/Conntrack.h index 733596d..7f1ec6f 100644 --- a/datapath-windows/ovsext/Conntrack.h +++ b/datapath-windows/ovsext/Conntrack.h @@ -19,6 +19,13 @@ #include "precomp.h" #include "Flow.h" +#include "Debug.h" +#include + +#ifdef OVS_DBG_MOD +#undef OVS_DBG_MOD +#endif +#define OVS_DBG_MOD OVS_DBG_CONTRK struct ct_addr { union { @@ -80,6 +87,19 @@ typedef struct OVS_CT_ENTRY { struct ovs_key_ct_labels labels; } OVS_CT_ENTRY, *POVS_CT_ENTRY; +typedef struct OVS_CT_REL_ENTRY { + OVS_CT_KEY key; + POVS_CT_ENTRY parent; + UINT64 expiration; + LIST_ENTRY link; +} OVS_CT_REL_ENTRY, *POVS_CT_REL_ENTRY; + +typedef struct _OVS_CT_THREAD_CTX { + KEVENT event; + PVOID threadObject; + UINT32 exit; +} OVS_CT_THREAD_CTX, *POVS_CT_THREAD_CTX; + typedef struct OvsConntrackKeyLookupCtx { OVS_CT_KEY key; POVS_CT_ENTRY entry; @@ -158,13 +178,26 @@ enum CT_UPDATE_RES OvsConntrackUpdateOtherEntry(OVS_CT_ENTRY *conn_, enum CT_UPDATE_RES OvsConntrackUpdateIcmpEntry(OVS_CT_ENTRY* conn_, BOOLEAN reply, UINT64 now); -NTSTATUS -OvsCreateNlMsgFromCtEntry(POVS_CT_ENTRY entry, - PVOID outBuffer, - UINT32 outBufLen, - UINT8 eventType, - UINT32 nlmsgSeq, - UINT32 nlmsgPid, - UINT8 nfGenVersion, - UINT32 dpIfIndex); +NTSTATUS OvsCreateNlMsgFromCtEntry(POVS_CT_ENTRY entry, + PVOID outBuffer, + UINT32 outBufLen, + UINT8 eventType, + UINT32 nlmsgSeq, + UINT32 nlmsgPid, + UINT8 nfGenVersion, + UINT32 dpIfIndex); + +/* Tracking related connections */ +NTSTATUS OvsInitCtRelated(POVS_SWITCH_CONTEXT context); +VOID OvsCleanupCtRelated(VOID); +NDIS_STATUS OvsCtRelatedEntryCreate(UINT8 ipProto, + UINT16 dl_type, + UINT32 serverIp, + UINT32 clientIp, + UINT16 serverPort, + UINT16 clientPort, + UINT64 currentTime, + POVS_CT_ENTRY parent); +POVS_CT_ENTRY OvsCtRelatedLookup(OVS_CT_KEY key, UINT64 currentTime); + #endif /* __OVS_CONNTRACK_H_ */