|
@@ -125,6 +125,7 @@ EXPORT_SYMBOL(eth_header);
|
|
*/
|
|
*/
|
|
u32 eth_get_headlen(void *data, unsigned int len)
|
|
u32 eth_get_headlen(void *data, unsigned int len)
|
|
{
|
|
{
|
|
|
|
+ const unsigned int flags = FLOW_DISSECTOR_F_PARSE_1ST_FRAG;
|
|
const struct ethhdr *eth = (const struct ethhdr *)data;
|
|
const struct ethhdr *eth = (const struct ethhdr *)data;
|
|
struct flow_keys keys;
|
|
struct flow_keys keys;
|
|
|
|
|
|
@@ -134,7 +135,7 @@ u32 eth_get_headlen(void *data, unsigned int len)
|
|
|
|
|
|
/* parse any remaining L2/L3 headers, check for L4 */
|
|
/* parse any remaining L2/L3 headers, check for L4 */
|
|
if (!skb_flow_dissect_flow_keys_buf(&keys, data, eth->h_proto,
|
|
if (!skb_flow_dissect_flow_keys_buf(&keys, data, eth->h_proto,
|
|
- sizeof(*eth), len, 0))
|
|
|
|
|
|
+ sizeof(*eth), len, flags))
|
|
return max_t(u32, keys.control.thoff, sizeof(*eth));
|
|
return max_t(u32, keys.control.thoff, sizeof(*eth));
|
|
|
|
|
|
/* parse for any L4 headers */
|
|
/* parse for any L4 headers */
|