diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2009-10-20 01:06:22 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-10-20 01:06:22 -0700 |
commit | d19742fb1c68e6db83b76e06dea5a374c99e104f (patch) | |
tree | 3975747b3e1e62a81a3f9961bf7c2545ac7b4648 | |
parent | ad959e76f0fa94d299a8c25cb45de4d1b845e9ce (diff) | |
download | linux-3.10-d19742fb1c68e6db83b76e06dea5a374c99e104f.tar.gz linux-3.10-d19742fb1c68e6db83b76e06dea5a374c99e104f.tar.bz2 linux-3.10-d19742fb1c68e6db83b76e06dea5a374c99e104f.zip |
filter: Add SKF_AD_QUEUE instruction
It can help being able to filter packets on their queue_mapping.
If filter performance is not good, we could add a "numqueue" field
in struct packet_type, so that netif_nit_deliver() and other functions
can directly ignore packets with not expected queue number.
Lets experiment this simple filter extension first.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/linux/filter.h | 3 | ||||
-rw-r--r-- | net/core/filter.c | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/include/linux/filter.h b/include/linux/filter.h index 909193e2539..bb3b4352978 100644 --- a/include/linux/filter.h +++ b/include/linux/filter.h @@ -124,7 +124,8 @@ struct sock_fprog /* Required for SO_ATTACH_FILTER. */ #define SKF_AD_NLATTR 12 #define SKF_AD_NLATTR_NEST 16 #define SKF_AD_MARK 20 -#define SKF_AD_MAX 24 +#define SKF_AD_QUEUE 24 +#define SKF_AD_MAX 28 #define SKF_NET_OFF (-0x100000) #define SKF_LL_OFF (-0x200000) diff --git a/net/core/filter.c b/net/core/filter.c index e3987e1d483..08db7b9143a 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -306,6 +306,9 @@ load_b: case SKF_AD_MARK: A = skb->mark; continue; + case SKF_AD_QUEUE: + A = skb->queue_mapping; + continue; case SKF_AD_NLATTR: { struct nlattr *nla; |