From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54300) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aNZKV-0006Gw-I3 for qemu-devel@nongnu.org; Mon, 25 Jan 2016 00:04:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aNZKS-0007ws-Bi for qemu-devel@nongnu.org; Mon, 25 Jan 2016 00:04:43 -0500 Received: from mx1.redhat.com ([209.132.183.28]:35856) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aNZKS-0007wn-5r for qemu-devel@nongnu.org; Mon, 25 Jan 2016 00:04:40 -0500 References: <1453451811-11860-1-git-send-email-zhang.zhanghailiang@huawei.com> <1453451811-11860-4-git-send-email-zhang.zhanghailiang@huawei.com> <56A1F73D.7030601@cn.fujitsu.com> From: Jason Wang Message-ID: <56A5ACDD.8040708@redhat.com> Date: Mon, 25 Jan 2016 13:04:29 +0800 MIME-Version: 1.0 In-Reply-To: <56A1F73D.7030601@cn.fujitsu.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: Wen Congyang , zhanghailiang , qemu-devel@nongnu.org Cc: zhangchen.fnst@cn.fujitsu.com, hongyang.yang@easystack.cn On 01/22/2016 05:32 PM, Wen Congyang wrote: > 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. Then let's better move it to qemu_netfiler_receive(). > > Thanks > Wen Congyang > > > >