diff options
| author | Michal Sekletar <msekleta@redhat.com> | 2015-03-24 09:48:41 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2015-03-24 15:25:15 -0400 |
| commit | 27cd5452476978283decb19e429e81fc6c71e74b (patch) | |
| tree | a147d4576190e18580589e6faaf08e1b7050ef2d /include/uapi/linux | |
| parent | f6bb76cd4d8552bada1e454c291419f893e1af7b (diff) | |
filter: introduce SKF_AD_VLAN_TPID BPF extension
If vlan offloading takes place then vlan header is removed from frame
and its contents, both vlan_tci and vlan_proto, is available to user
space via TPACKET interface. However, only vlan_tci can be used in BPF
filters.
This commit introduces a new BPF extension. It makes possible to load
the value of vlan_proto (vlan TPID) to register A. Support for classic
BPF and eBPF is being added, analogous to skb->protocol.
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Alexei Starovoitov <ast@plumgrid.com>
Cc: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: Michal Sekletar <msekleta@redhat.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@plumgrid.com>
Reviewed-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/uapi/linux')
| -rw-r--r-- | include/uapi/linux/bpf.h | 1 | ||||
| -rw-r--r-- | include/uapi/linux/filter.h | 3 |
2 files changed, 3 insertions, 1 deletions
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index 3dd314a45d0d..27dc4ec58840 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h | |||
| @@ -182,6 +182,7 @@ struct __sk_buff { | |||
| 182 | __u32 protocol; | 182 | __u32 protocol; |
| 183 | __u32 vlan_present; | 183 | __u32 vlan_present; |
| 184 | __u32 vlan_tci; | 184 | __u32 vlan_tci; |
| 185 | __u32 vlan_proto; | ||
| 185 | }; | 186 | }; |
| 186 | 187 | ||
| 187 | #endif /* _UAPI__LINUX_BPF_H__ */ | 188 | #endif /* _UAPI__LINUX_BPF_H__ */ |
diff --git a/include/uapi/linux/filter.h b/include/uapi/linux/filter.h index 47785d5ecf17..34c7936ca114 100644 --- a/include/uapi/linux/filter.h +++ b/include/uapi/linux/filter.h | |||
| @@ -77,7 +77,8 @@ struct sock_fprog { /* Required for SO_ATTACH_FILTER. */ | |||
| 77 | #define SKF_AD_VLAN_TAG_PRESENT 48 | 77 | #define SKF_AD_VLAN_TAG_PRESENT 48 |
| 78 | #define SKF_AD_PAY_OFFSET 52 | 78 | #define SKF_AD_PAY_OFFSET 52 |
| 79 | #define SKF_AD_RANDOM 56 | 79 | #define SKF_AD_RANDOM 56 |
| 80 | #define SKF_AD_MAX 60 | 80 | #define SKF_AD_VLAN_TPID 60 |
| 81 | #define SKF_AD_MAX 64 | ||
| 81 | #define SKF_NET_OFF (-0x100000) | 82 | #define SKF_NET_OFF (-0x100000) |
| 82 | #define SKF_LL_OFF (-0x200000) | 83 | #define SKF_LL_OFF (-0x200000) |
| 83 | 84 | ||
