diff -NurpPbB --minimal linux-2.6.19.7-vs2.2.0-z1.2/net/packet/af_packet.c linux-2.6.19.7-vs2.2.0-z1.3/net/packet/af_packet.c --- linux-2.6.19.7-vs2.2.0-z1.2/net/packet/af_packet.c 2007-04-24 06:06:46 +0200 +++ linux-2.6.19.7-vs2.2.0-z1.3/net/packet/af_packet.c 2007-04-24 23:07:34 +0200 @@ -432,6 +432,15 @@ static inline unsigned int run_filter(st unsigned int res) { struct sk_filter *filter; + struct nx_info *nxi = sk->sk_nx_info; + int tag = skb->skb_tag; + + vxdprintk(VXD_CBIT(net, 8), + "run_filter: %p[#%u] #%d %d", + nxi, nxi?nxi->nx_id:0, tag, res); + + if (nxi && !((tag == 1) || (nxi->nx_id == tag))) + return 0; rcu_read_lock_bh(); filter = rcu_dereference(sk->sk_filter);