From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41013) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aMY5C-0004TI-77 for qemu-devel@nongnu.org; Fri, 22 Jan 2016 04:32:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aMY59-0008E6-1K for qemu-devel@nongnu.org; Fri, 22 Jan 2016 04:32:42 -0500 Received: from [59.151.112.132] (port=60919 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aMY58-0008Cy-Lm for qemu-devel@nongnu.org; Fri, 22 Jan 2016 04:32:38 -0500 References: <1453451811-11860-1-git-send-email-zhang.zhanghailiang@huawei.com> <1453451811-11860-4-git-send-email-zhang.zhanghailiang@huawei.com> From: Wen Congyang Message-ID: <56A1F73D.7030601@cn.fujitsu.com> Date: Fri, 22 Jan 2016 17:32:45 +0800 MIME-Version: 1.0 In-Reply-To: <1453451811-11860-4-git-send-email-zhang.zhanghailiang@huawei.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH RFC 3/7] net/filter: Skip the disabled filter when delivering packets List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: zhanghailiang , qemu-devel@nongnu.org Cc: jasowang@redhat.com, zhangchen.fnst@cn.fujitsu.com, hongyang.yang@easystack.cn On 01/22/2016 04:36 PM, zhanghailiang wrote: > If the filter is disabled, don't go through it. > > Signed-off-by: zhanghailiang > --- > include/net/filter.h | 5 +++++ > net/net.c | 4 ++++ > 2 files changed, 9 insertions(+) > > diff --git a/include/net/filter.h b/include/net/filter.h > index 9ed5ec6..d797ee4 100644 > --- a/include/net/filter.h > +++ b/include/net/filter.h > @@ -74,6 +74,11 @@ ssize_t qemu_netfilter_pass_to_next(NetClientState *sender, > int iovcnt, > void *opaque); > > +static inline bool qemu_need_skip_netfilter(NetFilterState *nf) > +{ > + return nf->enabled ? false : true; > +} > + > void netfilter_print_info(NetFilterState *nf, char *output_str, int size); > > #endif /* QEMU_NET_FILTER_H */ > diff --git a/net/net.c b/net/net.c > index 87de7c0..ec43105 100644 > --- a/net/net.c > +++ b/net/net.c > @@ -581,6 +581,10 @@ static ssize_t filter_receive_iov(NetClientState *nc, > NetFilterState *nf = NULL; > > QTAILQ_FOREACH(nf, &nc->filters, next) { > + /* Don't go through filter if it is off */ > + if (qemu_need_skip_netfilter(nf)) { > + continue; > + } > ret = qemu_netfilter_receive(nf, direction, sender, flags, iov, > iovcnt, sent_cb); > if (ret) { > qemu_netfilter_pass_to_next() shoule also be updated. Thanks Wen Congyang