diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/skbuff.h | 14 | 
1 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 497412165b1..fa88b966cb8 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -32,6 +32,7 @@  #include <linux/hrtimer.h>  #include <linux/dma-mapping.h>  #include <linux/netdev_features.h> +#include <net/flow_keys.h>  /* Don't change this without changing skb_csum_unnecessary! */  #define CHECKSUM_NONE 0 @@ -1559,6 +1560,19 @@ static inline void skb_set_transport_header(struct sk_buff *skb,  	skb->transport_header += offset;  } +static inline void skb_probe_transport_header(struct sk_buff *skb, +					      const int offset_hint) +{ +	struct flow_keys keys; + +	if (skb_transport_header_was_set(skb)) +		return; +	else if (skb_flow_dissect(skb, &keys)) +		skb_set_transport_header(skb, keys.thoff); +	else +		skb_set_transport_header(skb, offset_hint); +} +  static inline unsigned char *skb_network_header(const struct sk_buff *skb)  {  	return skb->head + skb->network_header;  |