From patchwork Mon Feb 1 12:01:17 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhanghailiang X-Patchwork-Id: 8178411 Return-Path: X-Original-To: patchwork-qemu-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 6F3D79F8AA for ; Mon, 1 Feb 2016 12:02:35 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id BA15E203C2 for ; Mon, 1 Feb 2016 12:02:34 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D4522203B7 for ; Mon, 1 Feb 2016 12:02:32 +0000 (UTC) Received: from localhost ([::1]:51965 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aQDBf-0004Q4-U8 for patchwork-qemu-devel@patchwork.kernel.org; Mon, 01 Feb 2016 07:02:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53786) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aQDBW-0004Pc-6l for qemu-devel@nongnu.org; Mon, 01 Feb 2016 07:02:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aQDBS-0003FQ-QG for qemu-devel@nongnu.org; Mon, 01 Feb 2016 07:02:22 -0500 Received: from szxga03-in.huawei.com ([119.145.14.66]:33011) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aQDBS-0003Er-8J for qemu-devel@nongnu.org; Mon, 01 Feb 2016 07:02:18 -0500 Received: from 172.24.1.48 (EHLO szxeml432-hub.china.huawei.com) ([172.24.1.48]) by szxrg03-dlp.huawei.com (MOS 4.4.3-GA FastPath queued) with ESMTP id BVN64178; Mon, 01 Feb 2016 20:02:00 +0800 (CST) Received: from localhost (10.177.24.212) by szxeml432-hub.china.huawei.com (10.82.67.209) with Microsoft SMTP Server id 14.3.235.1; Mon, 1 Feb 2016 20:01:51 +0800 From: zhanghailiang To: Date: Mon, 1 Feb 2016 20:01:17 +0800 Message-ID: <1454328077-18820-5-git-send-email-zhang.zhanghailiang@huawei.com> X-Mailer: git-send-email 1.9.0.msysgit.0 In-Reply-To: <1454328077-18820-1-git-send-email-zhang.zhanghailiang@huawei.com> References: <1454328077-18820-1-git-send-email-zhang.zhanghailiang@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.177.24.212] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020206.56AF493D.002F, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2013-05-26 15:14:31, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: ce964fc04d2a98e1e450929b730cc0de X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] X-Received-From: 119.145.14.66 Cc: zhanghailiang , zhangchen.fnst@cn.fujitsu.com, jasowang@redhat.com, dgilbert@redhat.com, hongyang.yang@easystack.cn Subject: [Qemu-devel] [PATCH v3 4/4] net/filter: Add a default filter to each netdev X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP We add each netdev a default buffer filter, and the default buffer filter is disabled, so it has no side effect for packets delivering in qemu net layer. The default buffer filter can be used by COLO or Micro-checkpoint, The reason we add the default filter is we hope to support hot add network during COLO state in future. Signed-off-by: zhanghailiang --- v2: - Add codes that generate id automatically for default filter (Jason's suggestion) - Some other minor fixes. --- include/net/filter.h | 4 ++++ net/net.c | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/include/net/filter.h b/include/net/filter.h index 661abef..8f5fa31 100644 --- a/include/net/filter.h +++ b/include/net/filter.h @@ -22,6 +22,10 @@ #define NETFILTER_CLASS(klass) \ OBJECT_CLASS_CHECK(NetFilterClass, (klass), TYPE_NETFILTER) +#define DEFAULT_FILTER_TYPE "nop" + +#define TYPE_FILTER_BUFFER "filter-buffer" + typedef void (FilterSetup) (NetFilterState *nf, Error **errp); typedef void (FilterCleanup) (NetFilterState *nf); /* diff --git a/net/net.c b/net/net.c index a49af48..998e90a 100644 --- a/net/net.c +++ b/net/net.c @@ -77,6 +77,12 @@ const char *host_net_devices[] = { int default_net = 1; +/* + * TODO: Export this with an option for users to control + * this with comand line ? + */ +char default_netfilter_type[16] = TYPE_FILTER_BUFFER; + /***********************************************************/ /* network device redirectors */ @@ -1029,6 +1035,23 @@ static int net_client_init1(const void *object, int is_netdev, Error **errp) } return -1; } + + if (is_netdev) { + const Netdev *netdev = object; + char default_name[128]; + + snprintf(default_name, sizeof(default_name), + "%s%s", netdev->id, DEFAULT_FILTER_TYPE); + /* + * Here we add each netdev a default filter, + * it will disabled by default, Users can enable it when necessary. + */ + netdev_add_filter(netdev->id, + default_netfilter_type, + default_name, + true, + errp); + } return 0; }