net: always walk through filters in reverse if traffic is egress
commit25aaadf063c447def3442f30390334cb3ada37db
authorLi Zhijian <lizhijian@cn.fujitsu.com>
Tue, 26 Jan 2016 05:00:22 +0000 (26 13:00 +0800)
committerJason Wang <jasowang@redhat.com>
Thu, 4 Feb 2016 06:13:11 +0000 (4 14:13 +0800)
treea94658cb213264a6d64b74b5e4f83ad35323f9f9
parentab685220f64d170522c6647c71509fdb03920bd9
net: always walk through filters in reverse if traffic is egress

Previously, if we attach more than one filters for a single netdev,
both ingress and egress traffic will go through net filters in same
order like:

ingress: netdev ->filter1 ->filter2 ->...filter[n] ->emulated device
egress: emulated device ->filter1 ->filter2 ->...filter[n] ->netdev.

This is against the natural feeling and will complicate filters
configuration since in some scenes, we hope filters handle the egress
traffic in a reverse order. For example, in colo-proxy (will be
implemented later), we have a redirector filter and a colo-rewriter
filter, we need the filter behave like:

ingress(->)/egress(<-): chardev<->redirector<->colo-rewriter<->emulated device

Since both buffer filter and dump do not require strict order of
filters, this patch switches to always let egress traffic walk through
net filters in reverse to simplify the possible filters configuration
in the future.

Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com>
Reviewed-by: Yang Hongyang <hongyang.yang@easystack.cn>
Signed-off-by: Jason Wang <jasowang@redhat.com>
include/net/net.h
net/filter.c
net/net.c