From nobody Wed Apr 24 23:00:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493372952093131.98389784535118; Fri, 28 Apr 2017 02:49:12 -0700 (PDT) Received: from localhost ([::1]:36095 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42WU-0005jl-Pj for importer@patchew.org; Fri, 28 Apr 2017 05:49:10 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33854) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Uw-0004ey-PV for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d42Us-0001Sd-6v for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:34 -0400 Received: from [59.151.112.132] (port=46892 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Ur-0001Qm-S9 for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:30 -0400 Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 28 Apr 2017 17:47:19 +0800 Received: from G08CNEXCHPEKD01.g08.fujitsu.local (unknown [10.167.33.80]) by cn.fujitsu.com (Postfix) with ESMTP id 884E247CE221; Fri, 28 Apr 2017 17:47:18 +0800 (CST) Received: from localhost.localdomain (10.167.226.56) by G08CNEXCHPEKD01.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 28 Apr 2017 17:47:18 +0800 X-IronPort-AV: E=Sophos;i="5.22,518,1449504000"; d="scan'208";a="18277655" From: Zhang Chen To: qemu devel , Jason Wang Date: Fri, 28 Apr 2017 17:47:11 +0800 Message-ID: <1493372840-24551-2-git-send-email-zhangchen.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> References: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.226.56] X-yoursite-MailScanner-ID: 884E247CE221.ACBF7 X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: zhangchen.fnst@cn.fujitsu.com X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 59.151.112.132 Subject: [Qemu-devel] [PATCH V3 01/10] net: Add vnet_hdr_len related callback in NetClientInfo X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: zhanghailiang , Li Zhijian , weifuqiang , "eddie . dong" , Zhang Chen , bian naimeng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add get_vnet_hdr_len and get_using_vnet_hdr callback that make we get vnet_hdr_len easily. Signed-off-by: Zhang Chen --- include/net/net.h | 6 ++++++ net/net.c | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/include/net/net.h b/include/net/net.h index 99b28d5..402d913 100644 --- a/include/net/net.h +++ b/include/net/net.h @@ -57,7 +57,9 @@ typedef RxFilterInfo *(QueryRxFilter)(NetClientState *); typedef bool (HasUfo)(NetClientState *); typedef bool (HasVnetHdr)(NetClientState *); typedef bool (HasVnetHdrLen)(NetClientState *, int); +typedef int (GetVnetHdrLen)(NetClientState *); typedef void (UsingVnetHdr)(NetClientState *, bool); +typedef bool (GetUsingVnetHdr)(NetClientState *); typedef void (SetOffload)(NetClientState *, int, int, int, int, int); typedef void (SetVnetHdrLen)(NetClientState *, int); typedef int (SetVnetLE)(NetClientState *, bool); @@ -79,7 +81,9 @@ typedef struct NetClientInfo { HasUfo *has_ufo; HasVnetHdr *has_vnet_hdr; HasVnetHdrLen *has_vnet_hdr_len; + GetVnetHdrLen *get_vnet_hdr_len; UsingVnetHdr *using_vnet_hdr; + GetUsingVnetHdr *get_using_vnet_hdr; SetOffload *set_offload; SetVnetHdrLen *set_vnet_hdr_len; SetVnetLE *set_vnet_le; @@ -155,7 +159,9 @@ void qemu_format_nic_info_str(NetClientState *nc, uint8= _t macaddr[6]); bool qemu_has_ufo(NetClientState *nc); bool qemu_has_vnet_hdr(NetClientState *nc); bool qemu_has_vnet_hdr_len(NetClientState *nc, int len); +int qemu_get_vnet_hdr_len(NetClientState *nc); void qemu_using_vnet_hdr(NetClientState *nc, bool enable); +bool qemu_get_using_vnet_hdr(NetClientState *nc); void qemu_set_offload(NetClientState *nc, int csum, int tso4, int tso6, int ecn, int ufo); void qemu_set_vnet_hdr_len(NetClientState *nc, int len); diff --git a/net/net.c b/net/net.c index 0ac3b9e..f69260f 100644 --- a/net/net.c +++ b/net/net.c @@ -466,6 +466,15 @@ bool qemu_has_vnet_hdr_len(NetClientState *nc, int len) return nc->info->has_vnet_hdr_len(nc, len); } =20 +int qemu_get_vnet_hdr_len(NetClientState *nc) +{ + if (!nc || !nc->info->get_vnet_hdr_len) { + return false; + } + + return nc->info->get_vnet_hdr_len(nc); +} + void qemu_using_vnet_hdr(NetClientState *nc, bool enable) { if (!nc || !nc->info->using_vnet_hdr) { @@ -475,6 +484,15 @@ void qemu_using_vnet_hdr(NetClientState *nc, bool enab= le) nc->info->using_vnet_hdr(nc, enable); } =20 +bool qemu_get_using_vnet_hdr(NetClientState *nc) +{ + if (!nc || !nc->info->get_using_vnet_hdr) { + return false; + } + + return nc->info->get_using_vnet_hdr(nc); +} + void qemu_set_offload(NetClientState *nc, int csum, int tso4, int tso6, int ecn, int ufo) { --=20 2.7.4 From nobody Wed Apr 24 23:00:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493372950645483.2494597227967; Fri, 28 Apr 2017 02:49:10 -0700 (PDT) Received: from localhost ([::1]:36094 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42WS-0005i4-OY for importer@patchew.org; Fri, 28 Apr 2017 05:49:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33856) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Uw-0004ez-Qj for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d42Us-0001Sx-9r for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:34 -0400 Received: from [59.151.112.132] (port=49865 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Ur-0001QD-TZ for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:30 -0400 Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 28 Apr 2017 17:47:19 +0800 Received: from G08CNEXCHPEKD01.g08.fujitsu.local (unknown [10.167.33.80]) by cn.fujitsu.com (Postfix) with ESMTP id 7320F47CE223; Fri, 28 Apr 2017 17:47:19 +0800 (CST) Received: from localhost.localdomain (10.167.226.56) by G08CNEXCHPEKD01.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 28 Apr 2017 17:47:19 +0800 X-IronPort-AV: E=Sophos;i="5.22,518,1449504000"; d="scan'208";a="18277654" From: Zhang Chen To: qemu devel , Jason Wang Date: Fri, 28 Apr 2017 17:47:12 +0800 Message-ID: <1493372840-24551-3-git-send-email-zhangchen.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> References: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.226.56] X-yoursite-MailScanner-ID: 7320F47CE223.AC49E X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: zhangchen.fnst@cn.fujitsu.com X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 59.151.112.132 Subject: [Qemu-devel] [PATCH V3 02/10] net/tap.c: Add tap_get_vnet_hdr_len and tap_get_using_vnet_hdr function X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: zhanghailiang , Li Zhijian , weifuqiang , "eddie . dong" , Zhang Chen , bian naimeng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Make tap backend support get_vnet_hdr_len. Signed-off-by: Zhang Chen --- net/tap-win32.c | 12 ++++++++++++ net/tap.c | 20 ++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/net/tap-win32.c b/net/tap-win32.c index 662f9b6..337e8ea 100644 --- a/net/tap-win32.c +++ b/net/tap-win32.c @@ -729,6 +729,11 @@ static void tap_using_vnet_hdr(NetClientState *nc, boo= l using_vnet_hdr) { } =20 +static void tap_get_using_vnet_hdr(NetClientState *nc) +{ + return false; +} + static void tap_set_offload(NetClientState *nc, int csum, int tso4, int tso6, int ecn, int ufo) { @@ -744,6 +749,11 @@ static bool tap_has_vnet_hdr_len(NetClientState *nc, i= nt len) return false; } =20 +static int tap_get_vnet_hdr_len(NetClientState *nc) +{ + return 0; +} + static void tap_set_vnet_hdr_len(NetClientState *nc, int len) { abort(); @@ -757,7 +767,9 @@ static NetClientInfo net_tap_win32_info =3D { .has_ufo =3D tap_has_ufo, .has_vnet_hdr =3D tap_has_vnet_hdr, .has_vnet_hdr_len =3D tap_has_vnet_hdr_len, + .get_vnet_hdr_len =3D tap_get_vnet_hdr_len, .using_vnet_hdr =3D tap_using_vnet_hdr, + .get_using_vnet_hdr =3D tap_get_using_vnet_hdr, .set_offload =3D tap_set_offload, .set_vnet_hdr_len =3D tap_set_vnet_hdr_len, }; diff --git a/net/tap.c b/net/tap.c index 979e622..214c83d 100644 --- a/net/tap.c +++ b/net/tap.c @@ -246,6 +246,15 @@ static bool tap_has_vnet_hdr_len(NetClientState *nc, i= nt len) return !!tap_probe_vnet_hdr_len(s->fd, len); } =20 +static int tap_get_vnet_hdr_len(NetClientState *nc) +{ + TAPState *s =3D DO_UPCAST(TAPState, nc, nc); + + assert(nc->info->type =3D=3D NET_CLIENT_DRIVER_TAP); + + return s->host_vnet_hdr_len; +} + static void tap_set_vnet_hdr_len(NetClientState *nc, int len) { TAPState *s =3D DO_UPCAST(TAPState, nc, nc); @@ -268,6 +277,15 @@ static void tap_using_vnet_hdr(NetClientState *nc, boo= l using_vnet_hdr) s->using_vnet_hdr =3D using_vnet_hdr; } =20 +static bool tap_get_using_vnet_hdr(NetClientState *nc) +{ + TAPState *s =3D DO_UPCAST(TAPState, nc, nc); + + assert(nc->info->type =3D=3D NET_CLIENT_DRIVER_TAP); + + return s->using_vnet_hdr; +} + static int tap_set_vnet_le(NetClientState *nc, bool is_le) { TAPState *s =3D DO_UPCAST(TAPState, nc, nc); @@ -354,7 +372,9 @@ static NetClientInfo net_tap_info =3D { .has_ufo =3D tap_has_ufo, .has_vnet_hdr =3D tap_has_vnet_hdr, .has_vnet_hdr_len =3D tap_has_vnet_hdr_len, + .get_vnet_hdr_len =3D tap_get_vnet_hdr_len, .using_vnet_hdr =3D tap_using_vnet_hdr, + .get_using_vnet_hdr =3D tap_get_using_vnet_hdr, .set_offload =3D tap_set_offload, .set_vnet_hdr_len =3D tap_set_vnet_hdr_len, .set_vnet_le =3D tap_set_vnet_le, --=20 2.7.4 From nobody Wed Apr 24 23:00:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493373334494429.54581161762235; Fri, 28 Apr 2017 02:55:34 -0700 (PDT) Received: from localhost ([::1]:36129 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42cf-0002E0-85 for importer@patchew.org; Fri, 28 Apr 2017 05:55:33 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33863) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Ux-0004f5-6G for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d42Ut-0001TX-8p for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:35 -0400 Received: from [59.151.112.132] (port=46892 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Us-0001Qm-To for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:31 -0400 Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 28 Apr 2017 17:47:20 +0800 Received: from G08CNEXCHPEKD01.g08.fujitsu.local (unknown [10.167.33.80]) by cn.fujitsu.com (Postfix) with ESMTP id 7406C47B0CB7; Fri, 28 Apr 2017 17:47:20 +0800 (CST) Received: from localhost.localdomain (10.167.226.56) by G08CNEXCHPEKD01.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 28 Apr 2017 17:47:20 +0800 X-IronPort-AV: E=Sophos;i="5.22,518,1449504000"; d="scan'208";a="18277658" From: Zhang Chen To: qemu devel , Jason Wang Date: Fri, 28 Apr 2017 17:47:13 +0800 Message-ID: <1493372840-24551-4-git-send-email-zhangchen.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> References: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.226.56] X-yoursite-MailScanner-ID: 7406C47B0CB7.AC3CA X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: zhangchen.fnst@cn.fujitsu.com X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 59.151.112.132 Subject: [Qemu-devel] [PATCH V3 03/10] net/netmap.c: Add netmap_get_vnet_hdr_len function X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: zhanghailiang , Li Zhijian , weifuqiang , "eddie . dong" , Zhang Chen , bian naimeng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Make netmap support get_vnet_hdr_len. Signed-off-by: Zhang Chen --- net/netmap.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/net/netmap.c b/net/netmap.c index 2d11a8f..694c340 100644 --- a/net/netmap.c +++ b/net/netmap.c @@ -360,6 +360,13 @@ static bool netmap_has_vnet_hdr_len(NetClientState *nc= , int len) return true; } =20 +static int netmap_get_vnet_hdr_len(NetClientState *nc) +{ + NetmapState *s =3D DO_UPCAST(NetmapState, nc, nc); + + return s->vnet_hdr_len; +} + /* A netmap interface that supports virtio-net headers always * supports UFO, so we use this callback also for the has_ufo hook. */ static bool netmap_has_vnet_hdr(NetClientState *nc) @@ -409,6 +416,7 @@ static NetClientInfo net_netmap_info =3D { .has_ufo =3D netmap_has_vnet_hdr, .has_vnet_hdr =3D netmap_has_vnet_hdr, .has_vnet_hdr_len =3D netmap_has_vnet_hdr_len, + .get_vnet_hdr_len =3D netmap_get_vnet_hdr_len, .using_vnet_hdr =3D netmap_using_vnet_hdr, .set_offload =3D netmap_set_offload, .set_vnet_hdr_len =3D netmap_set_vnet_hdr_len, --=20 2.7.4 From nobody Wed Apr 24 23:00:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493373216967451.38010665363663; Fri, 28 Apr 2017 02:53:36 -0700 (PDT) Received: from localhost ([::1]:36117 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42al-0000iE-Fm for importer@patchew.org; Fri, 28 Apr 2017 05:53:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33862) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Ux-0004f4-68 for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d42Ut-0001Ti-Av for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:35 -0400 Received: from [59.151.112.132] (port=20529 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Us-0001QC-Ul for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:31 -0400 Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 28 Apr 2017 17:47:20 +0800 Received: from G08CNEXCHPEKD01.g08.fujitsu.local (unknown [10.167.33.80]) by cn.fujitsu.com (Postfix) with ESMTP id 65D9F467021F; Fri, 28 Apr 2017 17:47:21 +0800 (CST) Received: from localhost.localdomain (10.167.226.56) by G08CNEXCHPEKD01.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 28 Apr 2017 17:47:21 +0800 X-IronPort-AV: E=Sophos;i="5.22,518,1449504000"; d="scan'208";a="18277659" From: Zhang Chen To: qemu devel , Jason Wang Date: Fri, 28 Apr 2017 17:47:14 +0800 Message-ID: <1493372840-24551-5-git-send-email-zhangchen.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> References: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.226.56] X-yoursite-MailScanner-ID: 65D9F467021F.ACE47 X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: zhangchen.fnst@cn.fujitsu.com X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 59.151.112.132 Subject: [Qemu-devel] [PATCH V3 04/10] net/filter-mirror.c: Add filter-mirror and filter-redirector vnet support. X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: zhanghailiang , Li Zhijian , weifuqiang , "eddie . dong" , Zhang Chen , bian naimeng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In this patch, we change the send packet format from struct {int size; const uint8_t buf[];} to {int size; int vnet_hdr_len; con= st uint8_t buf[];}. make other module(like colo-compare) know how to parse net packet correctly. Signed-off-by: Zhang Chen --- net/filter-mirror.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/net/filter-mirror.c b/net/filter-mirror.c index 72fa7c2..bb9ecf3 100644 --- a/net/filter-mirror.c +++ b/net/filter-mirror.c @@ -43,12 +43,14 @@ typedef struct MirrorState { SocketReadState rs; } MirrorState; =20 -static int filter_mirror_send(CharBackend *chr_out, +static int filter_mirror_send(MirrorState *s, const struct iovec *iov, int iovcnt) { + NetFilterState *nf =3D NETFILTER(s); int ret =3D 0; ssize_t size =3D 0; + ssize_t vnet_hdr_len; uint32_t len =3D 0; char *buf; =20 @@ -58,14 +60,30 @@ static int filter_mirror_send(CharBackend *chr_out, } =20 len =3D htonl(size); - ret =3D qemu_chr_fe_write_all(chr_out, (uint8_t *)&len, sizeof(len)); + ret =3D qemu_chr_fe_write_all(&s->chr_out, (uint8_t *)&len, sizeof(len= )); + if (ret !=3D sizeof(len)) { + goto err; + } + + /* + * We send vnet header len make other module(like colo-compare) + * know how to parse net packet correctly. + */ + if (qemu_get_using_vnet_hdr(nf->netdev)) { + vnet_hdr_len =3D qemu_get_vnet_hdr_len(nf->netdev); + } else { + vnet_hdr_len =3D qemu_get_vnet_hdr_len(nf->netdev->peer); + } + + len =3D htonl(vnet_hdr_len); + ret =3D qemu_chr_fe_write_all(&s->chr_out, (uint8_t *)&len, sizeof(len= )); if (ret !=3D sizeof(len)) { goto err; } =20 buf =3D g_malloc(size); iov_to_buf(iov, iovcnt, 0, buf, size); - ret =3D qemu_chr_fe_write_all(chr_out, (uint8_t *)buf, size); + ret =3D qemu_chr_fe_write_all(&s->chr_out, (uint8_t *)buf, size); g_free(buf); if (ret !=3D size) { goto err; @@ -141,7 +159,7 @@ static ssize_t filter_mirror_receive_iov(NetFilterState= *nf, MirrorState *s =3D FILTER_MIRROR(nf); int ret; =20 - ret =3D filter_mirror_send(&s->chr_out, iov, iovcnt); + ret =3D filter_mirror_send(s, iov, iovcnt); if (ret) { error_report("filter_mirror_send failed(%s)", strerror(-ret)); } @@ -164,7 +182,7 @@ static ssize_t filter_redirector_receive_iov(NetFilterS= tate *nf, int ret; =20 if (qemu_chr_fe_get_driver(&s->chr_out)) { - ret =3D filter_mirror_send(&s->chr_out, iov, iovcnt); + ret =3D filter_mirror_send(s, iov, iovcnt); if (ret) { error_report("filter_mirror_send failed(%s)", strerror(-ret)); } --=20 2.7.4 From nobody Wed Apr 24 23:00:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493373528702638.2615780821627; Fri, 28 Apr 2017 02:58:48 -0700 (PDT) Received: from localhost ([::1]:36140 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42fn-0004jS-EC for importer@patchew.org; Fri, 28 Apr 2017 05:58:47 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33860) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Ux-0004f2-5d for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d42Uv-0001WA-H6 for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:35 -0400 Received: from [59.151.112.132] (port=20529 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Uv-0001QC-4f for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:33 -0400 Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 28 Apr 2017 17:47:26 +0800 Received: from G08CNEXCHPEKD01.g08.fujitsu.local (unknown [10.167.33.80]) by cn.fujitsu.com (Postfix) with ESMTP id 4F10647B0CB7; Fri, 28 Apr 2017 17:47:22 +0800 (CST) Received: from localhost.localdomain (10.167.226.56) by G08CNEXCHPEKD01.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 28 Apr 2017 17:47:22 +0800 X-IronPort-AV: E=Sophos;i="5.22,518,1449504000"; d="scan'208";a="18277685" From: Zhang Chen To: qemu devel , Jason Wang Date: Fri, 28 Apr 2017 17:47:15 +0800 Message-ID: <1493372840-24551-6-git-send-email-zhangchen.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> References: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.226.56] X-yoursite-MailScanner-ID: 4F10647B0CB7.AC514 X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: zhangchen.fnst@cn.fujitsu.com X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 59.151.112.132 Subject: [Qemu-devel] [PATCH V3 05/10] net/net.c: Add vnet header length to SocketReadState X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: zhanghailiang , Li Zhijian , weifuqiang , "eddie . dong" , Zhang Chen , bian naimeng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Address Jason Wang's comments add vnet header length to SocketReadState. So we change net_fill_rstate() to read struct {int size; int vnet_hdr_len; const uint8_t buf[];}. Signed-off-by: Zhang Chen --- include/net/net.h | 4 +++- net/net.c | 24 ++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/include/net/net.h b/include/net/net.h index 402d913..865cb98 100644 --- a/include/net/net.h +++ b/include/net/net.h @@ -115,9 +115,11 @@ typedef struct NICState { } NICState; =20 struct SocketReadState { - int state; /* 0 =3D getting length, 1 =3D getting data */ + /* 0 =3D getting length, 1 =3D getting vnet header length, 2 =3D getti= ng data */ + int state; uint32_t index; uint32_t packet_len; + uint32_t vnet_hdr_len; uint8_t buf[NET_BUFSIZE]; SocketReadStateFinalize *finalize; }; diff --git a/net/net.c b/net/net.c index f69260f..5a6b5ac 100644 --- a/net/net.c +++ b/net/net.c @@ -1639,8 +1639,12 @@ int net_fill_rstate(SocketReadState *rs, const uint8= _t *buf, int size) unsigned int l; =20 while (size > 0) { - /* reassemble a packet from the network */ - switch (rs->state) { /* 0 =3D getting length, 1 =3D getting data */ + /* Reassemble a packet from the network. + * 0 =3D getting length. + * 1 =3D getting vnet header length. + * 2 =3D getting data. + */ + switch (rs->state) { case 0: l =3D 4 - rs->index; if (l > size) { @@ -1658,6 +1662,22 @@ int net_fill_rstate(SocketReadState *rs, const uint8= _t *buf, int size) } break; case 1: + l =3D 4 - rs->index; + if (l > size) { + l =3D size; + } + memcpy(rs->buf + rs->index, buf, l); + buf +=3D l; + size -=3D l; + rs->index +=3D l; + if (rs->index =3D=3D 4) { + /* got vnet header length */ + rs->vnet_hdr_len =3D ntohl(*(uint32_t *)rs->buf); + rs->index =3D 0; + rs->state =3D 2; + } + break; + case 2: l =3D rs->packet_len - rs->index; if (l > size) { l =3D size; --=20 2.7.4 From nobody Wed Apr 24 23:00:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493373217178663.5144236745529; Fri, 28 Apr 2017 02:53:37 -0700 (PDT) Received: from localhost ([::1]:36118 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42am-0000j3-0e for importer@patchew.org; Fri, 28 Apr 2017 05:53:36 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33861) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Ux-0004f3-6F for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d42Uu-0001VY-Ez for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:35 -0400 Received: from [59.151.112.132] (port=49865 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Uu-0001QD-3b for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:32 -0400 Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 28 Apr 2017 17:47:26 +0800 Received: from G08CNEXCHPEKD01.g08.fujitsu.local (unknown [10.167.33.80]) by cn.fujitsu.com (Postfix) with ESMTP id DB19F47CE24C; Fri, 28 Apr 2017 17:47:23 +0800 (CST) Received: from localhost.localdomain (10.167.226.56) by G08CNEXCHPEKD01.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 28 Apr 2017 17:47:23 +0800 X-IronPort-AV: E=Sophos;i="5.22,518,1449504000"; d="scan'208";a="18277683" From: Zhang Chen To: qemu devel , Jason Wang Date: Fri, 28 Apr 2017 17:47:16 +0800 Message-ID: <1493372840-24551-7-git-send-email-zhangchen.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> References: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.226.56] X-yoursite-MailScanner-ID: DB19F47CE24C.AFFA0 X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: zhangchen.fnst@cn.fujitsu.com X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 59.151.112.132 Subject: [Qemu-devel] [PATCH V3 06/10] tests/e1000e-test.c : change e1000e test case send data format X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: zhanghailiang , Li Zhijian , weifuqiang , "eddie . dong" , Zhang Chen , bian naimeng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Because we change net_fill_rstate() date format from struct {int size; const uint8_t buf[];} to {int size; int vnet_hdr_len; con= st uint8_t buf[];}. So, we add fake vnet_hdr_len in e1000e test case. Signed-off-by: Zhang Chen --- tests/e1000e-test.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/e1000e-test.c b/tests/e1000e-test.c index c612dc6..fb3bd77 100644 --- a/tests/e1000e-test.c +++ b/tests/e1000e-test.c @@ -329,11 +329,15 @@ static void e1000e_receive_verify(e1000e_device *d) =20 char test[] =3D "TEST"; int len =3D htonl(sizeof(test)); + int vnet_hdr_len =3D 0; struct iovec iov[] =3D { { .iov_base =3D &len, .iov_len =3D sizeof(len), },{ + .iov_base =3D &vnet_hdr_len, + .iov_len =3D sizeof(vnet_hdr_len), + },{ .iov_base =3D test, .iov_len =3D sizeof(test), }, @@ -344,8 +348,10 @@ static void e1000e_receive_verify(e1000e_device *d) int ret; =20 /* Send a dummy packet to device's socket*/ - ret =3D iov_send(test_sockets[0], iov, 2, 0, sizeof(len) + sizeof(test= )); - g_assert_cmpint(ret, =3D=3D , sizeof(test) + sizeof(len)); + ret =3D iov_send(test_sockets[0], iov, 3, 0, sizeof(len) + + sizeof(vnet_hdr_len) + sizeof(test)); + g_assert_cmpint(ret, =3D=3D , sizeof(test) + sizeof(len) + + sizeof(vnet_hdr_len)); =20 /* Prepare test data buffer */ uint64_t data =3D guest_alloc(test_alloc, data_len); --=20 2.7.4 From nobody Wed Apr 24 23:00:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 14933730855554.852858300014304; Fri, 28 Apr 2017 02:51:25 -0700 (PDT) Received: from localhost ([::1]:36106 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Ye-0007JN-Bh for importer@patchew.org; Fri, 28 Apr 2017 05:51:24 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33858) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Ux-0004f0-5h for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d42Ut-0001U6-DM for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:35 -0400 Received: from [59.151.112.132] (port=49865 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Ut-0001QD-0o for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:31 -0400 Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 28 Apr 2017 17:47:26 +0800 Received: from G08CNEXCHPEKD01.g08.fujitsu.local (unknown [10.167.33.80]) by cn.fujitsu.com (Postfix) with ESMTP id A804547E6349; Fri, 28 Apr 2017 17:47:24 +0800 (CST) Received: from localhost.localdomain (10.167.226.56) by G08CNEXCHPEKD01.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 28 Apr 2017 17:47:24 +0800 X-IronPort-AV: E=Sophos;i="5.22,518,1449504000"; d="scan'208";a="18277679" From: Zhang Chen To: qemu devel , Jason Wang Date: Fri, 28 Apr 2017 17:47:17 +0800 Message-ID: <1493372840-24551-8-git-send-email-zhangchen.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> References: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.226.56] X-yoursite-MailScanner-ID: A804547E6349.ACF02 X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: zhangchen.fnst@cn.fujitsu.com X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 59.151.112.132 Subject: [Qemu-devel] [PATCH V3 07/10] tests/virtio-net-test.c : change virtio-net test case iov send data format X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: zhanghailiang , Li Zhijian , weifuqiang , "eddie . dong" , Zhang Chen , bian naimeng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Because we change net_fill_rstate() date format from struct {int size; const uint8_t buf[];} to {int size; int vnet_hdr_len; con= st uint8_t buf[];}. So, we add fake vnet_hdr_len in virtio-net test case. Signed-off-by: Zhang Chen --- tests/virtio-net-test.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/tests/virtio-net-test.c b/tests/virtio-net-test.c index 8f94360..93f4fe0 100644 --- a/tests/virtio-net-test.c +++ b/tests/virtio-net-test.c @@ -89,11 +89,15 @@ static void rx_test(QVirtioDevice *dev, char test[] =3D "TEST"; char buffer[64]; int len =3D htonl(sizeof(test)); + int vnet_hdr_len =3D 0; struct iovec iov[] =3D { { .iov_base =3D &len, .iov_len =3D sizeof(len), }, { + .iov_base =3D &vnet_hdr_len, + .iov_len =3D sizeof(vnet_hdr_len), + }, { .iov_base =3D test, .iov_len =3D sizeof(test), }, @@ -105,8 +109,9 @@ static void rx_test(QVirtioDevice *dev, free_head =3D qvirtqueue_add(vq, req_addr, 64, true, false); qvirtqueue_kick(dev, vq, free_head); =20 - ret =3D iov_send(socket, iov, 2, 0, sizeof(len) + sizeof(test)); - g_assert_cmpint(ret, =3D=3D, sizeof(test) + sizeof(len)); + ret =3D iov_send(socket, iov, 3, 0, sizeof(len) + + sizeof(test) + sizeof(vnet_hdr_len)); + g_assert_cmpint(ret, =3D=3D, sizeof(test) + sizeof(len) + sizeof(vnet_= hdr_len)); =20 qvirtio_wait_queue_isr(dev, vq, QVIRTIO_NET_TIMEOUT_US); memread(req_addr + VNET_HDR_SIZE, buffer, sizeof(test)); @@ -151,12 +156,16 @@ static void rx_stop_cont_test(QVirtioDevice *dev, char test[] =3D "TEST"; char buffer[64]; int len =3D htonl(sizeof(test)); + int vnet_hdr_len =3D 0; QDict *rsp; struct iovec iov[] =3D { { .iov_base =3D &len, .iov_len =3D sizeof(len), }, { + .iov_base =3D &vnet_hdr_len, + .iov_len =3D sizeof(vnet_hdr_len), + }, { .iov_base =3D test, .iov_len =3D sizeof(test), }, @@ -171,8 +180,9 @@ static void rx_stop_cont_test(QVirtioDevice *dev, rsp =3D qmp("{ 'execute' : 'stop'}"); QDECREF(rsp); =20 - ret =3D iov_send(socket, iov, 2, 0, sizeof(len) + sizeof(test)); - g_assert_cmpint(ret, =3D=3D, sizeof(test) + sizeof(len)); + ret =3D iov_send(socket, iov, 3, 0, sizeof(len) + + sizeof(test) + sizeof(vnet_hdr_len)); + g_assert_cmpint(ret, =3D=3D, sizeof(test) + sizeof(len) + sizeof(vnet_= hdr_len)); =20 /* We could check the status, but this command is more importantly to * ensure the packet data gets queued in QEMU, before we do 'cont'. --=20 2.7.4 From nobody Wed Apr 24 23:00:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493373447035113.7555758480064; Fri, 28 Apr 2017 02:57:27 -0700 (PDT) Received: from localhost ([::1]:36137 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42eT-0003ao-Ot for importer@patchew.org; Fri, 28 Apr 2017 05:57:25 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33864) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Ux-0004f6-6W for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d42Uu-0001Vg-JZ for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:35 -0400 Received: from [59.151.112.132] (port=46892 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Ut-0001Qm-VJ for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:32 -0400 Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 28 Apr 2017 17:47:26 +0800 Received: from G08CNEXCHPEKD01.g08.fujitsu.local (unknown [10.167.33.80]) by cn.fujitsu.com (Postfix) with ESMTP id C894847E6356; Fri, 28 Apr 2017 17:47:25 +0800 (CST) Received: from localhost.localdomain (10.167.226.56) by G08CNEXCHPEKD01.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 28 Apr 2017 17:47:25 +0800 X-IronPort-AV: E=Sophos;i="5.22,518,1449504000"; d="scan'208";a="18277680" From: Zhang Chen To: qemu devel , Jason Wang Date: Fri, 28 Apr 2017 17:47:18 +0800 Message-ID: <1493372840-24551-9-git-send-email-zhangchen.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> References: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.226.56] X-yoursite-MailScanner-ID: C894847E6356.AD55E X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: zhangchen.fnst@cn.fujitsu.com X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 59.151.112.132 Subject: [Qemu-devel] [PATCH V3 08/10] net/colo-compare.c: Make colo-compare support vnet_hdr_len X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: zhanghailiang , Li Zhijian , weifuqiang , "eddie . dong" , Zhang Chen , bian naimeng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" COLO-compare can get vnet header length from filter, Add vnet_hdr_len to struct packet and output packet with the vnet_hdr_len. Signed-off-by: Zhang Chen --- net/colo-compare.c | 39 ++++++++++++++++++++++++++++++++------- net/colo.c | 3 ++- net/colo.h | 4 +++- net/filter-rewriter.c | 2 +- 4 files changed, 38 insertions(+), 10 deletions(-) diff --git a/net/colo-compare.c b/net/colo-compare.c index 54e6d40..b3e933c 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -99,7 +99,8 @@ enum { =20 static int compare_chr_send(CharBackend *out, const uint8_t *buf, - uint32_t size); + uint32_t size, + uint32_t vnet_hdr_len); =20 static gint seq_sorter(Packet *a, Packet *b, gpointer data) { @@ -121,9 +122,13 @@ static int packet_enqueue(CompareState *s, int mode) Connection *conn; =20 if (mode =3D=3D PRIMARY_IN) { - pkt =3D packet_new(s->pri_rs.buf, s->pri_rs.packet_len); + pkt =3D packet_new(s->pri_rs.buf, + s->pri_rs.packet_len, + s->pri_rs.vnet_hdr_len); } else { - pkt =3D packet_new(s->sec_rs.buf, s->sec_rs.packet_len); + pkt =3D packet_new(s->sec_rs.buf, + s->sec_rs.packet_len, + s->sec_rs.vnet_hdr_len); } =20 if (parse_packet_early(pkt)) { @@ -436,7 +441,10 @@ static void colo_compare_connection(void *opaque, void= *user_data) } =20 if (result) { - ret =3D compare_chr_send(&s->chr_out, pkt->data, pkt->size); + ret =3D compare_chr_send(&s->chr_out, + pkt->data, + pkt->size, + pkt->vnet_hdr_len); if (ret < 0) { error_report("colo_send_primary_packet failed"); } @@ -459,7 +467,8 @@ static void colo_compare_connection(void *opaque, void = *user_data) =20 static int compare_chr_send(CharBackend *out, const uint8_t *buf, - uint32_t size) + uint32_t size, + uint32_t vnet_hdr_len) { int ret =3D 0; uint32_t len =3D htonl(size); @@ -473,6 +482,16 @@ static int compare_chr_send(CharBackend *out, goto err; } =20 + /* + * We send vnet header len make other module(like colo-compare) + * know how to parse net packet correctly. + */ + len =3D htonl(vnet_hdr_len); + ret =3D qemu_chr_fe_write_all(out, (uint8_t *)&len, sizeof(len)); + if (ret !=3D sizeof(len)) { + goto err; + } + ret =3D qemu_chr_fe_write_all(out, (uint8_t *)buf, size); if (ret !=3D size) { goto err; @@ -616,7 +635,10 @@ static void compare_pri_rs_finalize(SocketReadState *p= ri_rs) =20 if (packet_enqueue(s, PRIMARY_IN)) { trace_colo_compare_main("primary: unsupported packet in"); - compare_chr_send(&s->chr_out, pri_rs->buf, pri_rs->packet_len); + compare_chr_send(&s->chr_out, + pri_rs->buf, + pri_rs->packet_len, + pri_rs->vnet_hdr_len); } else { /* compare connection */ g_queue_foreach(&s->conn_list, colo_compare_connection, s); @@ -725,7 +747,10 @@ static void colo_flush_packets(void *opaque, void *use= r_data) =20 while (!g_queue_is_empty(&conn->primary_list)) { pkt =3D g_queue_pop_head(&conn->primary_list); - compare_chr_send(&s->chr_out, pkt->data, pkt->size); + compare_chr_send(&s->chr_out, + pkt->data, + pkt->size, + pkt->vnet_hdr_len); packet_destroy(pkt, NULL); } while (!g_queue_is_empty(&conn->secondary_list)) { diff --git a/net/colo.c b/net/colo.c index 8cc166b..180eaed 100644 --- a/net/colo.c +++ b/net/colo.c @@ -153,13 +153,14 @@ void connection_destroy(void *opaque) g_slice_free(Connection, conn); } =20 -Packet *packet_new(const void *data, int size) +Packet *packet_new(const void *data, int size, int vnet_hdr_len) { Packet *pkt =3D g_slice_new(Packet); =20 pkt->data =3D g_memdup(data, size); pkt->size =3D size; pkt->creation_ms =3D qemu_clock_get_ms(QEMU_CLOCK_HOST); + pkt->vnet_hdr_len =3D vnet_hdr_len; =20 return pkt; } diff --git a/net/colo.h b/net/colo.h index 7c524f3..caedb0d 100644 --- a/net/colo.h +++ b/net/colo.h @@ -43,6 +43,8 @@ typedef struct Packet { int size; /* Time of packet creation, in wall clock ms */ int64_t creation_ms; + /* Get vnet_hdr_len from filter */ + uint32_t vnet_hdr_len; } Packet; =20 typedef struct ConnectionKey { @@ -82,7 +84,7 @@ Connection *connection_get(GHashTable *connection_track_t= able, ConnectionKey *key, GQueue *conn_list); void connection_hashtable_reset(GHashTable *connection_track_table); -Packet *packet_new(const void *data, int size); +Packet *packet_new(const void *data, int size, int vnet_hdr_len); void packet_destroy(void *opaque, void *user_data); =20 #endif /* QEMU_COLO_PROXY_H */ diff --git a/net/filter-rewriter.c b/net/filter-rewriter.c index afa06e8..63256c7 100644 --- a/net/filter-rewriter.c +++ b/net/filter-rewriter.c @@ -158,7 +158,7 @@ static ssize_t colo_rewriter_receive_iov(NetFilterState= *nf, char *buf =3D g_malloc0(size); =20 iov_to_buf(iov, iovcnt, 0, buf, size); - pkt =3D packet_new(buf, size); + pkt =3D packet_new(buf, size, 0); g_free(buf); =20 /* --=20 2.7.4 From nobody Wed Apr 24 23:00:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493373088131625.4880895788649; Fri, 28 Apr 2017 02:51:28 -0700 (PDT) Received: from localhost ([::1]:36107 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Yg-0007LC-TK for importer@patchew.org; Fri, 28 Apr 2017 05:51:26 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33859) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Ux-0004f1-5h for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d42Uu-0001VS-Do for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:35 -0400 Received: from [59.151.112.132] (port=20529 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Uu-0001QC-1Y for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:32 -0400 Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 28 Apr 2017 17:47:26 +0800 Received: from G08CNEXCHPEKD01.g08.fujitsu.local (unknown [10.167.33.80]) by cn.fujitsu.com (Postfix) with ESMTP id B4A2447E6369; Fri, 28 Apr 2017 17:47:26 +0800 (CST) Received: from localhost.localdomain (10.167.226.56) by G08CNEXCHPEKD01.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 28 Apr 2017 17:47:26 +0800 X-IronPort-AV: E=Sophos;i="5.22,518,1449504000"; d="scan'208";a="18277681" From: Zhang Chen To: qemu devel , Jason Wang Date: Fri, 28 Apr 2017 17:47:19 +0800 Message-ID: <1493372840-24551-10-git-send-email-zhangchen.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> References: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.226.56] X-yoursite-MailScanner-ID: B4A2447E6369.AD739 X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: zhangchen.fnst@cn.fujitsu.com X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 59.151.112.132 Subject: [Qemu-devel] [PATCH V3 09/10] net/colo.c: Add vnet packet parse feature in colo-proxy X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: zhanghailiang , Li Zhijian , weifuqiang , "eddie . dong" , Zhang Chen , bian naimeng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Make colo-compare and filter-rewriter can parse vnet packet. Signed-off-by: Zhang Chen --- net/colo.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/colo.c b/net/colo.c index 180eaed..28ce7c8 100644 --- a/net/colo.c +++ b/net/colo.c @@ -43,11 +43,11 @@ int parse_packet_early(Packet *pkt) { int network_length; static const uint8_t vlan[] =3D {0x81, 0x00}; - uint8_t *data =3D pkt->data; + uint8_t *data =3D pkt->data + pkt->vnet_hdr_len; uint16_t l3_proto; ssize_t l2hdr_len =3D eth_get_l2_hdr_length(data); =20 - if (pkt->size < ETH_HLEN) { + if (pkt->size < ETH_HLEN + pkt->vnet_hdr_len) { trace_colo_proxy_main("pkt->size < ETH_HLEN"); return 1; } @@ -73,7 +73,7 @@ int parse_packet_early(Packet *pkt) } =20 network_length =3D pkt->ip->ip_hl * 4; - if (pkt->size < l2hdr_len + network_length) { + if (pkt->size < l2hdr_len + network_length + pkt->vnet_hdr_len) { trace_colo_proxy_main("pkt->size < network_header + network_length= "); return 1; } --=20 2.7.4 From nobody Wed Apr 24 23:00:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493372954777212.43463362101977; Fri, 28 Apr 2017 02:49:14 -0700 (PDT) Received: from localhost ([::1]:36096 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42WX-0005lt-Ee for importer@patchew.org; Fri, 28 Apr 2017 05:49:13 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33887) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Ux-0004f8-T8 for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d42Uv-0001WK-IF for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:35 -0400 Received: from [59.151.112.132] (port=49865 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d42Uv-0001QD-63 for qemu-devel@nongnu.org; Fri, 28 Apr 2017 05:47:33 -0400 Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 28 Apr 2017 17:47:26 +0800 Received: from G08CNEXCHPEKD01.g08.fujitsu.local (unknown [10.167.33.80]) by cn.fujitsu.com (Postfix) with ESMTP id 870A547CE24B; Fri, 28 Apr 2017 17:47:27 +0800 (CST) Received: from localhost.localdomain (10.167.226.56) by G08CNEXCHPEKD01.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 28 Apr 2017 17:47:27 +0800 X-IronPort-AV: E=Sophos;i="5.22,518,1449504000"; d="scan'208";a="18277686" From: Zhang Chen To: qemu devel , Jason Wang Date: Fri, 28 Apr 2017 17:47:20 +0800 Message-ID: <1493372840-24551-11-git-send-email-zhangchen.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> References: <1493372840-24551-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.226.56] X-yoursite-MailScanner-ID: 870A547CE24B.AE87C X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: zhangchen.fnst@cn.fujitsu.com X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 59.151.112.132 Subject: [Qemu-devel] [PATCH V3 10/10] net/colo-compare.c: Add vnet packet's tcp/udp/icmp compare X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: zhanghailiang , Li Zhijian , weifuqiang , "eddie . dong" , Zhang Chen , bian naimeng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" COLO-Proxy just focus on packet payload, So we skip vnet header. Signed-off-by: Zhang Chen --- net/colo-compare.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/net/colo-compare.c b/net/colo-compare.c index b3e933c..1941ad9 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -187,6 +187,8 @@ static int packet_enqueue(CompareState *s, int mode) */ static int colo_packet_compare_common(Packet *ppkt, Packet *spkt, int offs= et) { + int offset_all; + if (trace_event_get_state(TRACE_COLO_COMPARE_MISCOMPARE)) { char pri_ip_src[20], pri_ip_dst[20], sec_ip_src[20], sec_ip_dst[20= ]; =20 @@ -200,9 +202,12 @@ static int colo_packet_compare_common(Packet *ppkt, Pa= cket *spkt, int offset) sec_ip_src, sec_ip_dst); } =20 + offset_all =3D ppkt->vnet_hdr_len + offset; + if (ppkt->size =3D=3D spkt->size) { - return memcmp(ppkt->data + offset, spkt->data + offset, - spkt->size - offset); + return memcmp(ppkt->data + offset_all, + spkt->data + offset_all, + spkt->size - offset_all); } else { trace_colo_compare_main("Net packet size are not the same"); return -1; --=20 2.7.4