diff options
author | Atzm Watanabe <atzm@stratosphere.co.jp> | 2013-12-17 08:53:40 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-12-18 00:36:16 -0500 |
commit | a0cdfcf39362410d5ea983f4daf67b38de129408 (patch) | |
tree | 31de8d8010bafd58bade0701fb3f501bd6e4c0a7 /include/uapi/linux/if_packet.h | |
parent | e4d26f4b080f55e9577b45e6b51a04971eb459e9 (diff) |
packet: deliver VLAN TPID to userspace
This enables userspace to get VLAN TPID as well as the VLAN TCI.
Signed-off-by: Atzm Watanabe <atzm@stratosphere.co.jp>
Acked-by: Daniel Borkmann <dborkman@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/uapi/linux/if_packet.h')
-rw-r--r-- | include/uapi/linux/if_packet.h | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/include/uapi/linux/if_packet.h b/include/uapi/linux/if_packet.h index 9185dc9a4485..e9d844c80c11 100644 --- a/include/uapi/linux/if_packet.h +++ b/include/uapi/linux/if_packet.h | |||
@@ -84,17 +84,18 @@ struct tpacket_auxdata { | |||
84 | __u16 tp_mac; | 84 | __u16 tp_mac; |
85 | __u16 tp_net; | 85 | __u16 tp_net; |
86 | __u16 tp_vlan_tci; | 86 | __u16 tp_vlan_tci; |
87 | __u16 tp_padding; | 87 | __u16 tp_vlan_tpid; |
88 | }; | 88 | }; |
89 | 89 | ||
90 | /* Rx ring - header status */ | 90 | /* Rx ring - header status */ |
91 | #define TP_STATUS_KERNEL 0 | 91 | #define TP_STATUS_KERNEL 0 |
92 | #define TP_STATUS_USER (1 << 0) | 92 | #define TP_STATUS_USER (1 << 0) |
93 | #define TP_STATUS_COPY (1 << 1) | 93 | #define TP_STATUS_COPY (1 << 1) |
94 | #define TP_STATUS_LOSING (1 << 2) | 94 | #define TP_STATUS_LOSING (1 << 2) |
95 | #define TP_STATUS_CSUMNOTREADY (1 << 3) | 95 | #define TP_STATUS_CSUMNOTREADY (1 << 3) |
96 | #define TP_STATUS_VLAN_VALID (1 << 4) /* auxdata has valid tp_vlan_tci */ | 96 | #define TP_STATUS_VLAN_VALID (1 << 4) /* auxdata has valid tp_vlan_tci */ |
97 | #define TP_STATUS_BLK_TMO (1 << 5) | 97 | #define TP_STATUS_BLK_TMO (1 << 5) |
98 | #define TP_STATUS_VLAN_TPID_VALID (1 << 6) /* auxdata has valid tp_vlan_tpid */ | ||
98 | 99 | ||
99 | /* Tx ring - header status */ | 100 | /* Tx ring - header status */ |
100 | #define TP_STATUS_AVAILABLE 0 | 101 | #define TP_STATUS_AVAILABLE 0 |
@@ -133,12 +134,15 @@ struct tpacket2_hdr { | |||
133 | __u32 tp_sec; | 134 | __u32 tp_sec; |
134 | __u32 tp_nsec; | 135 | __u32 tp_nsec; |
135 | __u16 tp_vlan_tci; | 136 | __u16 tp_vlan_tci; |
136 | __u8 tp_padding[6]; | 137 | __u16 tp_vlan_tpid; |
138 | __u8 tp_padding[4]; | ||
137 | }; | 139 | }; |
138 | 140 | ||
139 | struct tpacket_hdr_variant1 { | 141 | struct tpacket_hdr_variant1 { |
140 | __u32 tp_rxhash; | 142 | __u32 tp_rxhash; |
141 | __u32 tp_vlan_tci; | 143 | __u32 tp_vlan_tci; |
144 | __u16 tp_vlan_tpid; | ||
145 | __u16 tp_padding; | ||
142 | }; | 146 | }; |
143 | 147 | ||
144 | struct tpacket3_hdr { | 148 | struct tpacket3_hdr { |
@@ -154,7 +158,7 @@ struct tpacket3_hdr { | |||
154 | union { | 158 | union { |
155 | struct tpacket_hdr_variant1 hv1; | 159 | struct tpacket_hdr_variant1 hv1; |
156 | }; | 160 | }; |
157 | __u8 tp_padding[12]; | 161 | __u8 tp_padding[8]; |
158 | }; | 162 | }; |
159 | 163 | ||
160 | struct tpacket_bd_ts { | 164 | struct tpacket_bd_ts { |