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>
This commit is contained in:
parent
ad959e76f0
commit
d19742fb1c
|
@ -124,7 +124,8 @@ struct sock_fprog /* Required for SO_ATTACH_FILTER. */
|
||||||
#define SKF_AD_NLATTR 12
|
#define SKF_AD_NLATTR 12
|
||||||
#define SKF_AD_NLATTR_NEST 16
|
#define SKF_AD_NLATTR_NEST 16
|
||||||
#define SKF_AD_MARK 20
|
#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_NET_OFF (-0x100000)
|
||||||
#define SKF_LL_OFF (-0x200000)
|
#define SKF_LL_OFF (-0x200000)
|
||||||
|
|
||||||
|
|
|
@ -306,6 +306,9 @@ load_b:
|
||||||
case SKF_AD_MARK:
|
case SKF_AD_MARK:
|
||||||
A = skb->mark;
|
A = skb->mark;
|
||||||
continue;
|
continue;
|
||||||
|
case SKF_AD_QUEUE:
|
||||||
|
A = skb->queue_mapping;
|
||||||
|
continue;
|
||||||
case SKF_AD_NLATTR: {
|
case SKF_AD_NLATTR: {
|
||||||
struct nlattr *nla;
|
struct nlattr *nla;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue