Message ID | 20100421172546.GO19334@cel.leo |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
From: Paul LeoNerd Evans <leonerd@leonerd.org.uk> Date: Wed, 21 Apr 2010 18:25:46 +0100 > When capturing packets on a PF_PACKET/SOCK_RAW socket bound to all > interfaces, there doesn't appear to be a way for the filter program to > actually find out the underlying hardware type the packet was captured > on, such as is reported by the sll_hatype field of the struct sockaddr_ll > when the packet is sent up to userland. > > Unless I've managed to miss a trick somewhere, this would seem to put a > fairly fundamental blocker on actually being able to filter in such > packets. Granted there's the SKF_OFF_NET area to inspect at the e.g. IPv4 > level, but this makes it impossible to do anything on e.g. the Ethernet > level. > > See below for a patch to add an SKF_AD_HATYPE field, up among the other > special access fields around SKF_AD_OFF. This looks fine but you need to submit your patch properly, including proper "Signed-off-by: " tags etc. see Documentation/SubmittingPatches for details. Please make a complete fresh new submission, and don't try to shortcut this by just replying and adding the Signed-off-by: or anything like that. Thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff -ur linux-2.6.33.2.orig/include/linux/filter.h linux-2.6.33.2/include/linux/filter.h --- linux-2.6.33.2.orig/include/linux/filter.h 2010-04-02 00:02:33.000000000 +0100 +++ linux-2.6.33.2/include/linux/filter.h 2010-04-20 22:40:25.000000000 +0100 @@ -123,7 +123,8 @@ #define SKF_AD_NLATTR_NEST 16 #define SKF_AD_MARK 20 #define SKF_AD_QUEUE 24 -#define SKF_AD_MAX 28 +#define SKF_AD_HATYPE 28 +#define SKF_AD_MAX 32 #define SKF_NET_OFF (-0x100000) #define SKF_LL_OFF (-0x200000) diff -ur linux-2.6.33.2.orig/net/core/filter.c linux-2.6.33.2/net/core/filter.c --- linux-2.6.33.2.orig/net/core/filter.c 2010-04-02 00:02:33.000000000 +0100 +++ linux-2.6.33.2/net/core/filter.c 2010-04-20 22:41:01.000000000 +0100 @@ -309,6 +309,9 @@ case SKF_AD_QUEUE: A = skb->queue_mapping; continue; + case SKF_AD_HATYPE: + A = skb->dev->type; + continue; case SKF_AD_NLATTR: { struct nlattr *nla;