From patchwork Mon Jul 15 09:59:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilson Peng X-Patchwork-Id: 1960544 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.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=Cfd6LH8r; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=140.211.166.133; helo=smtp2.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org) Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4WMyPM1JBWz1xr4 for ; Mon, 15 Jul 2024 20:00:21 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 48EBC40466; Mon, 15 Jul 2024 10:00:19 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id rVPwH6_fO-h8; Mon, 15 Jul 2024 10:00:17 +0000 (UTC) X-Comment: SPF check N/A for local connections - client-ip=140.211.9.56; helo=lists.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver= DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 3BF0740025 Authentication-Results: smtp2.osuosl.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=Cfd6LH8r Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp2.osuosl.org (Postfix) with ESMTPS id 3BF0740025; Mon, 15 Jul 2024 10:00:17 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 0BFDBC0A97; Mon, 15 Jul 2024 10:00:17 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 7A3E1C0A96 for ; Mon, 15 Jul 2024 10:00:15 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 68EF8404D4 for ; Mon, 15 Jul 2024 10:00:15 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id qPTJEyvcdbwq for ; Mon, 15 Jul 2024 10:00:14 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2a01:111:f403:c111::9; helo=dm5pr21cu001.outbound.protection.outlook.com; envelope-from=svc.ovs-community@vmware.com; receiver= DMARC-Filter: OpenDMARC Filter v1.4.2 smtp4.osuosl.org E295040474 Authentication-Results: smtp4.osuosl.org; dmarc=pass (p=quarantine dis=none) header.from=vmware.com DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org E295040474 Authentication-Results: smtp4.osuosl.org; dkim=pass (1024-bit key, unprotected) header.d=vmware.com header.i=@vmware.com header.a=rsa-sha256 header.s=selector2 header.b=Cfd6LH8r Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazlp170110009.outbound.protection.outlook.com [IPv6:2a01:111:f403:c111::9]) by smtp4.osuosl.org (Postfix) with ESMTPS id E295040474 for ; Mon, 15 Jul 2024 10:00:12 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ssnyntjSfymPqI7ocyzgQsdbYbEvEWA2L/+tIXANn1DDxmP96P/T6NrI+4vknI85bXnNwe3lBgCYIPivt3zv2T0G4EB810i3mj7Vyey+vDxwNrEs9bUrGYffqqjVHSq3GJy5rJJWeovVtLv94VsFrcHj0jrRLfw35+GnCTLoWvOGUQxdmqP/cOF33lC2myLkqk29ZYm/7RWdvEu/xInTrut1PtZnmM2J6z0zerqJcQOP+N0sJhpFfh3vb0QnwB6kb5s+Nzlde2Fsvi0py848tuYdKdtBrvn8T3146lMVt6J1RqDnF/QgciX6SPPeo8mLvA46ldneJ/1qnBma4DM1qA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=aFGqtqF9Nvs1GUUUeDXU3SO/XQUXhkcXCBzsCHpXvs8=; b=spV+pvBZ4oElERHgd+vW1zRHCfvGaLBUUVSuxwc/RqdYtxcjpIe16IPgB4H0Z2msVDTlF80SLcNy93xwEmj8trJA8n+Z1xYgSd5H4DPYG3rmeA5NwcNs+OyXU//1TDfRukmSc5kM3crRktPzMU6dsgwVXSnsteyd4r6JNQWAGCSrDgbwurb1x94Dok/06qKFLGST7FGPAGSb4149n813xe95guMIvKqOC5/1ym0671Gz9tx+q9qHevpF+mMBuitBInl7jk+RQFEAiTCeBWpAY7t0csF7V0O53l9iVbjK7F09nXjZqfQWQhg47IQKUDfN8qAINgULUkNWqj+4a1Gq2Q== 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=aFGqtqF9Nvs1GUUUeDXU3SO/XQUXhkcXCBzsCHpXvs8=; b=Cfd6LH8rExalrU1wLi2SuzoMKZ4IuoffwLB8CC4lT6kqkRdAwq5CKrQ8lv1f5x5fNnpmywHWPEkfuG4K6/1YbWr1heKDyE75vOj3lZMGvuyfQ7ystKLPpuKJEQkn2Jsin39CLHKKimCrSmxHxO4X24G83vbkDh0o6PaqwAaz8O4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vmware.com; Received: from BL3PR05MB9210.namprd05.prod.outlook.com (2603:10b6:208:3bd::19) by SA6PR05MB10625.namprd05.prod.outlook.com (2603:10b6:806:405::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.27; Mon, 15 Jul 2024 10:00:10 +0000 Received: from BL3PR05MB9210.namprd05.prod.outlook.com ([fe80::ea1d:8cc5:d97c:df96]) by BL3PR05MB9210.namprd05.prod.outlook.com ([fe80::ea1d:8cc5:d97c:df96%7]) with mapi id 15.20.7762.027; Mon, 15 Jul 2024 10:00:09 +0000 To: dev@openvswitch.org Date: Mon, 15 Jul 2024 17:59:54 +0800 Message-Id: <20240715095954.49436-1-svc.ovs-community@vmware.com> X-Mailer: git-send-email 2.39.2 (Apple Git-143) X-ClientProxiedBy: TYBP286CA0008.JPNP286.PROD.OUTLOOK.COM (2603:1096:404:ce::20) To BL3PR05MB9210.namprd05.prod.outlook.com (2603:10b6:208:3bd::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL3PR05MB9210:EE_|SA6PR05MB10625:EE_ X-MS-Office365-Filtering-Correlation-Id: 877eac72-2222-4a7e-05bd-08dca4b4e931 X-LD-Processed: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0,ExtFwd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|52116014|366016|38350700014; X-Microsoft-Antispam-Message-Info: RzcG9Q8l7b4lhL/zgIbAGKwVFOJknjEfwmDXv7uYmiv4k29HjwiBygSkY3GxGWmsJkWunnjHbMSvZo+dS3acQDqIyDJTOwbAb7Z5YZB+v0Jn25VhTihxXatDuyZWo+PGKPKnZ/LwaOFmtLH2113OjO382Hy276F9WOeKCgbLxlK/NlV/v78+wZnF30vgigCTccQgyIDaJ31Iu+RrZiaJ/GIDa+gEd1O0flGgjZP+fh63j2SzRJXb4oGcgRkU3gY7vm2YzQcKVEhJSwKjZu6R4WgP+QoZh4+w7eo0JD+LSUR7AVdW2P1EXwePjduFqDY+D4ADEAJX8//dMpXAM4xxBkUdfwuAsQfwqd5K4gPAudirxmCijVx1vEntMOJnnltdYEEVdux3xLSNVlWcCh2oPF2Ds1T1z9MaVAlPgBWDY8uUT2sPetnY+FwocfgFrCmyBjEkA/Cc1xXOH1xMYjLWuD2UtJAp6tk31v96zkx396FGKsp3SldhYp3DKuy54O991+4/c0yFEx1KxJlcepBgMvPVRkArgKF45vAn74gIgvb2F3D7IAMDlJTRtoZXoQFAPj+F5yz/pT9wrI9UQcur+D9V1uyGBCv9ov8hLC4LoB4TUpn3o+9MqBQ1qyPwtICtpF66bGvDC1ouegxx/wGqMqlpoHoj4xZAem2GowaUS6KhJZQkhg7DRgE7fz5qgsKHRpk10/281L2BKyEfPl1EYWFLFjPTEeB8uZrvT+u4wYzTsOOz/GUFWOgwTD4YfDtezVvNJzRgsygv4iimXMFK/x9kDxYycIh8wXsNbFvsiumexehgQoTpk/aM8t+lx7ZslnHRmtu8DZQvoGOTs+fyTwhbDgJpuJwvErkUuuI925jau3nqNhuhBGdI1npXPDcDZhFIWW7yM4NjsSWGQ/kwkddBN5SDDSRllUqyB2rGhvOw2uNndjKljglxvOIVCaCqP5MFTVYz2GPtVr6SzyHoNPzAlpAy9UZohm/HkWqr9ouu8nIkZ4dBXC+CFvP6B+6FCWexNkUtCH0jx/l6OKpzCLqWFvpdHdHX5WvQ4tAba/C8ImPJWEyi15zyy2ajl7st7lQG5p+E3r3amTnfKYYgAx3sjiPrX/h1OJcMcG78imIKtJ1xlnJP3alj/h4/xZgwaByyzpYm6WuoeM5SzFW47wFu1CmVaHooP+MJi7UUFWkK/c1zSJR3ABVPlBR+YFHBgDgikytWcrRWv4Fl0JLS6S+y9i8VynCM8cIBl+kJAIb7Sa1XeMbS4t0hG3UGuF109NJQwwDuT0rGnoUeZrdSAZMhHpZ5pKDp0pXbKtM+vwHWK574eXlSI5CPNcydpxwjxRjXKHLfwJcNsrSzVfnQaS0NVJLhq61q5Jzub3TV671k3fL6R9a7rNasPZxMn+ecmFKYGmcqjDTDcgglyoNIlA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BL3PR05MB9210.namprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(52116014)(366016)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: dUZbCfV4uMrQWChVG/tiDXdUCDaa0p9FBBm4puIM63rOHLWM1jFMK7FkLC+erTpmWUNUDazY2RS1o4FMq8X+2V6oub0HZZwQfAUTESl6/Cv1fIMHmJVnmjGqFva1QZG0MjPqYxaqkJLcU0/lAdneVhwYYqZFOLH19+S66N7sNN+zQdLyED8Tfzkt79AyWmX5VsOJ62/+RJIxpGCKyRYmFh/JZq5Hlu/++J3tWR3N/eMo5TVxF6dJvMlX1ylQMnY1+ku/7sHHiG0GBM252kz9OsqH4yCrYhxHWhwoeKE2BqYzls6wZFmMAoacmal7VHynt6aPsJsTr3SKD5BISnW3B5zF+43AGK0vXG6/uVMTX5AUZfnrm1BJa9Y8p7MwNgbJzyVjYak7K1fwt1dPJAHMXsrqN/zgpnZ8n+f9K/FPvQVwYPwvrOCfKfzxHZicuiVfZk/IVBZwI8HWW3lM7W2G1gN2hVJaduUQY6OeVM9/213qeyyThOTawWYTeeePSs6PMyb7OqrzMUM2IYrCS8ErYo1PY2ShdWFmJA/CulyccpbrIsUGfjvJHZBdOvcyxZZQREUFbf0w8kJx1zFH5FPbS6KFAyjOAZ//gynlWW8aR8NJZR7VkfhEe9ZMkEJqXGaHis5iWF455vbIaX2MK91bvtt5EP9av4M9IYNQGX+m9zf2aD2zV23ZWdiywchWOf7mq1UIgrw63eoR2bSjYkD3PWEjdxlGYPlqOBN7oGN5ZoQnXW4hLpYgWsVA+0H0JMtx7D9Oq+ZH2TiGsb29LG2q/alm5X0dTzfi1xnWYJdvhaTWeDpzmloeZcZDVsHnUrDs1lVKcGITVH0QjVEffKgkr0s94ckkyLMDx2g7SRX751IafXLlsLFvQzuhmeOxrB3Y/ZCpyP7cY4K99/YjNNoZBf+29cYOWo+gJFK3OzAKwT9vqLKS45sizYYOFEBBErnvqRrzkZXIOgE2Vs+Zk4+8/bRD7sNss4ef83rDHr0YDP2NehrP9BAmYAY2xApoPzVFjK3PUCZ00vIpZ32znSHsdGcU5ueqojzSFWTLfMBqVCD6XVkrFaYouAqp4qsG5rJ/7YPR8w9ZqosTzm9W6UCyH7U+wa82bHoTUL0AbExXSU/Ui4TjsEl5fvpMX45GLooB01wPAxpI+xU2MFLj47b6InHNWME9do8nDfAkQTg7KTSRsk4aP+DbzICmjeR+G0t8COqfEb4hdZEty8L+ayFwc++wo8yJZMUGAZKgQRF5FaDvwlcEAs+P1Ikz2/Pg/04kEMee7ug8wlZbsBGKhigJHsZEdt1KzMwBK2YaDI+FFaLefPRYzxt7Oa8D0xe+/3WXKypkz3uLaE6F6WP5fwau7c3efQjpXab9DDiTZwwE98skEJ88cwYxOs0pRdvWUTI+UIYcUgqRH922Wb9TiUDZlhdKVuqOK/p6W7wruOVo23dpZNbRljerlS3+qOt/F4EK0TtvL7buyjhJ1QFY2N0J34sObOpsdvU+KTjNXyD5lJcDBV7f08CyrFCGJbnLYuvxfFVKuKPXqL/b6H/DTzDDtqbyWw1Y4FUwdfHjOO7p0rcaBpReY139/8lnkRIEdx1yIl/E7uuWWMs+9PeP3KF6/Q== X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-Network-Message-Id: 877eac72-2222-4a7e-05bd-08dca4b4e931 X-MS-Exchange-CrossTenant-AuthSource: BL3PR05MB9210.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jul 2024 10:00:09.6357 (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: JI0Pfv8/0SKZglLLAiH0pd6+x0CQMfmJnS2fW4cu/VWXurNldtdWvDb4JAy3g4YiLwGKibt/7tjbkk0tuxq6xJzS3xDxWkj4e1Nyj71EInQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA6PR05MB10625 Subject: [ovs-dev] [ovs-dev v1 1/1] datapath-windows: Merge split dis-continuous net-buf. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Wilson Peng via dev From: Wilson Peng Reply-To: Wilson Peng Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" From: Wilson Peng NdisGetDataBuffer() is called without providing a buffer to copy packet data in case it is not contiguous. So, it fails in some scenarios where the packet is handled by the general network stack before OVS and headers become split in multiple buffers. In the fix it will supply the stack buffer to copy packet data when call NdisGetDataBuffer(). In the conntrack Action process, it will do OvsPartialCopyNBL firstly with the size of layers l7offsets. If the header is split the header will be merged to one continuous buffer. But IPV6 traffic is not handed in this case. Reported-at: https://github.com/openvswitch/ovs-issues/issues/323 Signed-off-by: Wilson Peng --- datapath-windows/ovsext/Actions.c | 7 +++++++ datapath-windows/ovsext/BufferMgmt.c | 4 +++- datapath-windows/ovsext/Conntrack.c | 6 +++++- datapath-windows/ovsext/IpFragment.c | 8 ++++++-- datapath-windows/ovsext/PacketParser.h | 1 + 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/datapath-windows/ovsext/Actions.c b/datapath-windows/ovsext/Actions.c index 97029b0f4..4bc2a6b65 100644 --- a/datapath-windows/ovsext/Actions.c +++ b/datapath-windows/ovsext/Actions.c @@ -2414,6 +2414,13 @@ OvsDoExecuteActions(POVS_SWITCH_CONTEXT switchContext, } PNET_BUFFER_LIST oldNbl = ovsFwdCtx.curNbl; + PUINT8 bufferStart = NULL; + + bufferStart = OvsGetHeaderBySize(&ovsFwdCtx, layers->l7Offset); + if (!bufferStart) { + dropReason = L"OVS-Netbuf reallocated failed"; + goto dropit; + } status = OvsExecuteConntrackAction(&ovsFwdCtx, key, (const PNL_ATTR)a); if (status != NDIS_STATUS_SUCCESS) { diff --git a/datapath-windows/ovsext/BufferMgmt.c b/datapath-windows/ovsext/BufferMgmt.c index 5c52757a0..b01f69fdf 100644 --- a/datapath-windows/ovsext/BufferMgmt.c +++ b/datapath-windows/ovsext/BufferMgmt.c @@ -1110,12 +1110,14 @@ GetIpHeaderInfo(PNET_BUFFER_LIST curNbl, IPHdr *ipHdr; IPv6Hdr *ipv6Hdr; PNET_BUFFER curNb; + CHAR tempBuf[MAX_IP_HEADER_LEN]; curNb = NET_BUFFER_LIST_FIRST_NB(curNbl); ASSERT(NET_BUFFER_NEXT_NB(curNb) == NULL); + NdisZeroMemory(tempBuf, MAX_IP_HEADER_LEN); eth = (EthHdr *)NdisGetDataBuffer(curNb, hdrInfo->l4Offset, - NULL, 1, 0); + (PVOID)tempBuf, 1, 0); if (eth == NULL) { return NDIS_STATUS_INVALID_PACKET; } diff --git a/datapath-windows/ovsext/Conntrack.c b/datapath-windows/ovsext/Conntrack.c index 39ba5cc10..0e7ecb855 100644 --- a/datapath-windows/ovsext/Conntrack.c +++ b/datapath-windows/ovsext/Conntrack.c @@ -683,6 +683,7 @@ OvsGetTcpHeader(PNET_BUFFER_LIST nbl, TCPHdr *tcp; VOID *dest = storage; uint16_t ipv6ExtLength = 0; + CHAR tempBuf[MAX_IP_HEADER_LEN]; if (layers->isIPv6) { ipv6Hdr = NdisGetDataBuffer(NET_BUFFER_LIST_FIRST_NB(nbl), @@ -701,9 +702,10 @@ OvsGetTcpHeader(PNET_BUFFER_LIST nbl, return storage; } } else { + NdisZeroMemory(tempBuf, MAX_IP_HEADER_LEN); ipHdr = NdisGetDataBuffer(NET_BUFFER_LIST_FIRST_NB(nbl), layers->l4Offset + sizeof(TCPHdr), - NULL, 1 /*no align*/, 0); + (PVOID)tempBuf, 1 /*no align*/, 0); if (ipHdr == NULL) { return NULL; } @@ -1202,6 +1204,8 @@ OvsCtExecute_(OvsForwardingContext *fwdCtx, UINT64 currentTime; NdisGetCurrentSystemTime((LARGE_INTEGER *) ¤tTime); + + curNbl = fwdCtx->curNbl; /* Retrieve the Conntrack Key related fields from packet */ OvsCtSetupLookupCtx(key, zone, &ctx, curNbl, layers->l4Offset); diff --git a/datapath-windows/ovsext/IpFragment.c b/datapath-windows/ovsext/IpFragment.c index afb8e50d6..54b6c9e41 100644 --- a/datapath-windows/ovsext/IpFragment.c +++ b/datapath-windows/ovsext/IpFragment.c @@ -153,12 +153,14 @@ OvsIpv4Reassemble(POVS_SWITCH_CONTEXT switchContext, PNET_BUFFER_LIST newNbl = NULL; UINT16 ipHdrLen, packetHeader; UINT32 packetLen; + CHAR tempBuf[MAX_IP_HEADER_LEN]; curNb = NET_BUFFER_LIST_FIRST_NB(*curNbl); ASSERT(NET_BUFFER_NEXT_NB(curNb) == NULL); + NdisZeroMemory(tempBuf, MAX_IP_HEADER_LEN); eth = (EthHdr*)NdisGetDataBuffer(curNb, layers->l4Offset, - NULL, 1, 0); + (PVOID)tempBuf, 1, 0); if (eth == NULL) { return NDIS_STATUS_INVALID_PACKET; } @@ -253,12 +255,14 @@ OvsProcessIpv4Fragment(POVS_SWITCH_CONTEXT switchContext, POVS_IPFRAG_ENTRY entry; POVS_FRAGMENT_LIST fragStorage; LOCK_STATE_EX htLockState; + CHAR tempBuf[MAX_IP_HEADER_LEN]; curNb = NET_BUFFER_LIST_FIRST_NB(*curNbl); ASSERT(NET_BUFFER_NEXT_NB(curNb) == NULL); + NdisZeroMemory(tempBuf, MAX_IP_HEADER_LEN); eth = (EthHdr*)NdisGetDataBuffer(curNb, layers->l4Offset, - NULL, 1, 0); + (PVOID)tempBuf, 1, 0); if (eth == NULL) { return NDIS_STATUS_INVALID_PACKET; } diff --git a/datapath-windows/ovsext/PacketParser.h b/datapath-windows/ovsext/PacketParser.h index 0d5c0a6cb..775c93026 100644 --- a/datapath-windows/ovsext/PacketParser.h +++ b/datapath-windows/ovsext/PacketParser.h @@ -18,6 +18,7 @@ #define __PACKET_PARSER_H_ 1 #define MIN_IPV4_HLEN 20 +#define MAX_IP_HEADER_LEN 80 #include "precomp.h" #include "NetProto.h"