[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20150410201719.GC5968@salvia>
Date: Fri, 10 Apr 2015 22:17:19 +0200
From: Pablo Neira Ayuso <pablo@...filter.org>
To: Patrick McHardy <kaber@...sh.net>
Cc: Thomas Graf <tgraf@...g.ch>, netfilter-devel@...r.kernel.org,
netdev@...r.kernel.org, davem@...emloft.net
Subject: Re: [PATCH 5/7] net: add netfilter ingress hook
On Fri, Apr 10, 2015 at 02:36:11PM +0100, Patrick McHardy wrote:
> On 10.04, Thomas Graf wrote:
> > On 04/10/15 at 02:15pm, Pablo Neira Ayuso wrote:
> > > static int __netif_receive_skb_ingress(struct sk_buff *skb, bool pfmemalloc,
> > > struct net_device *orig_dev)
> > > {
> > > @@ -3772,6 +3800,8 @@ skip_taps:
> > > if (!skb)
> > > return NET_RX_DROP;
> > > #endif
> > > + if (nf_hook_ingress_active(skb))
> > > + return nf_hook_ingress(skb, pt_prev, orig_dev, pfmemalloc);
> > >
> > > return __netif_receive_skb_finish(skb, pfmemalloc, pt_prev, orig_dev);
> > > }
> >
> > I would favour if we avoid for every subsystem to manage its ingress
> > filter pointers in net_device. From a net_device perspective, all it
> > takes is a single pointer which points to a single linked list of
> > filters which need to be run through. These entries could represent
> > an ingress qdisc or a netfilter chain or something else (L2 ingress
> > qdisc?).
>
> I'm wondering if the hook is the right abstraction at all. Netfilter hooks
> require async resumption (okfn) support, which is why all the refactoring is
> needed. Is that something that we need for NF_PROTO_NETDEV? For ingress
> userspace queueing *might* actually work if the missing pieces are added,
> but for offloaded rules it obviously can not work.
For userspace queueing from ingress we still have to call
skb_share_check() and hold a reference to orig_dev from the escape
path. But this support is still missing in nf_tables (actually, we
only support NFPROTO_IPV4 and NFPROTO_IPV6 at this moment, see patch
attached). Regarding offload, this path will not see any packet.
View attachment "0001-netfilter-nf_tables-restrict-nft_queue-to-AF_INET-an.patch" of type "text/x-diff" (974 bytes)
Powered by blists - more mailing lists