From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37302) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aNaBt-0008Sx-TF for qemu-devel@nongnu.org; Mon, 25 Jan 2016 00:59:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aNaBt-0001jv-1C for qemu-devel@nongnu.org; Mon, 25 Jan 2016 00:59:53 -0500 Received: from szxga03-in.huawei.com ([119.145.14.66]:50362) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aNaBs-0001jh-9L for qemu-devel@nongnu.org; Mon, 25 Jan 2016 00:59:52 -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> <56A5ACDD.8040708@redhat.com> From: Hailiang Zhang Message-ID: <56A5B9C5.2070200@huawei.com> Date: Mon, 25 Jan 2016 13:59:33 +0800 MIME-Version: 1.0 In-Reply-To: <56A5ACDD.8040708@redhat.com> Content-Type: text/plain; charset="windows-1252"; format=flowed 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: Jason Wang , Wen Congyang , qemu-devel@nongnu.org Cc: peter.huangpeng@huawei.com, zhangchen.fnst@cn.fujitsu.com, hongyang.yang@easystack.cn On 2016/1/25 13:04, Jason Wang wrote: > > > 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(). > Good idea, i will fix it, thanks. >> >> Thanks >> Wen Congyang >> >> >> >> > > > . >