From nobody Wed Nov 5 17:32:56 2025 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 1496829764422743.2101333382078; Wed, 7 Jun 2017 03:02:44 -0700 (PDT) Received: from localhost ([::1]:42397 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXnU-0007k7-OQ for importer@patchew.org; Wed, 07 Jun 2017 06:02:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60703) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXgM-0000sg-Do for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:55:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIXgK-0003WL-BW for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:55:18 -0400 Received: from [59.151.112.132] (port=2775 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXgJ-0003UP-Vt for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:55:16 -0400 Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 07 Jun 2017 17:55:13 +0800 Received: from G08CNEXCHPEKD02.g08.fujitsu.local (unknown [10.167.33.83]) by cn.fujitsu.com (Postfix) with ESMTP id C708347C7C61; Wed, 7 Jun 2017 17:55:13 +0800 (CST) Received: from localhost.localdomain (10.167.226.56) by G08CNEXCHPEKD02.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 7 Jun 2017 17:55:12 +0800 X-IronPort-AV: E=Sophos;i="5.22,518,1449504000"; d="scan'208";a="19761098" From: Zhang Chen To: qemu devel , Jason Wang Date: Wed, 7 Jun 2017 17:55:15 +0800 Message-ID: <1496829322-17099-4-git-send-email-zhangchen.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496829322-17099-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> References: <1496829322-17099-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.226.56] X-yoursite-MailScanner-ID: C708347C7C61.AEFA9 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 V6 03/10] net/filter-mirror.c: Add new option to enable vnet support for filter-redirector 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" We add the vnet_hdr_support option for filter-redirector, default is disabl= e. If you use virtio-net-pci net driver, please enable it. Because colo-compare or other modules needs the vnet_hdr_len to parse packet, so we add this new option send the len to others. You can use it for example: -object filter-redirector,id=3Dr0,netdev=3Dhn0,queue=3Dtx,outdev=3Dred0,vne= t_hdr_support Signed-off-by: Zhang Chen --- net/filter-mirror.c | 28 ++++++++++++++++++++++++++++ qemu-options.hx | 6 +++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/net/filter-mirror.c b/net/filter-mirror.c index 50aa81b..3413e82 100644 --- a/net/filter-mirror.c +++ b/net/filter-mirror.c @@ -376,6 +376,13 @@ static char *filter_redirector_get_outdev(Object *obj,= Error **errp) return g_strdup(s->outdev); } =20 +static bool filter_redirector_get_vnet_hdr(Object *obj, Error **errp) +{ + MirrorState *s =3D FILTER_REDIRECTOR(obj); + + return s->vnet_hdr; +} + static void filter_redirector_set_outdev(Object *obj, const char *value, Error **errp) { @@ -385,6 +392,15 @@ filter_redirector_set_outdev(Object *obj, const char *= value, Error **errp) s->outdev =3D g_strdup(value); } =20 +static void filter_redirector_set_vnet_hdr(Object *obj, + bool value, + Error **errp) +{ + MirrorState *s =3D FILTER_REDIRECTOR(obj); + + s->vnet_hdr =3D value; +} + static void filter_mirror_init(Object *obj) { MirrorState *s =3D FILTER_MIRROR(obj); @@ -405,10 +421,22 @@ static void filter_mirror_init(Object *obj) =20 static void filter_redirector_init(Object *obj) { + MirrorState *s =3D FILTER_REDIRECTOR(obj); + object_property_add_str(obj, "indev", filter_redirector_get_indev, filter_redirector_set_indev, NULL); object_property_add_str(obj, "outdev", filter_redirector_get_outdev, filter_redirector_set_outdev, NULL); + + /* + * The vnet_hdr is disabled by default, if you want to enable + * this option, you must enable all the option on related modules + * (like other filter or colo-compare). + */ + s->vnet_hdr =3D false; + object_property_add_bool(obj, "vnet_hdr_support", + filter_redirector_get_vnet_hdr, + filter_redirector_set_vnet_hdr, NULL); } =20 static void filter_mirror_fini(Object *obj) diff --git a/qemu-options.hx b/qemu-options.hx index 5c09fae..e78b942 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -4028,11 +4028,11 @@ queue @var{all|rx|tx} is an option that can be appl= ied to any netfilter. =20 filter-mirror on netdev @var{netdevid},mirror net packet to chardev@var{ch= ardevid}, if have the vnet_hdr_support flag, filter-mirror will mirror pack= et with vnet_hdr_len. =20 -@item -object filter-redirector,id=3D@var{id},netdev=3D@var{netdevid},inde= v=3D@var{chardevid}, -outdev=3D@var{chardevid}[,queue=3D@var{all|rx|tx}] +@item -object filter-redirector,id=3D@var{id},netdev=3D@var{netdevid},inde= v=3D@var{chardevid},outdev=3D@var{chardevid},queue=3D@var{all|rx|tx}[,vnet_= hdr_support] =20 filter-redirector on netdev @var{netdevid},redirect filter's net packet to= chardev -@var{chardevid},and redirect indev's packet to filter. +@var{chardevid},and redirect indev's packet to filter.if have the vnet_hdr= _support flag, +filter-redirector will redirect packet with vnet_hdr_len. Create a filter-redirector we need to differ outdev id from indev id, id c= an not be the same. we can just use indev or outdev, but at least one of indev or= outdev need to be specified. --=20 2.7.4