diff options
Diffstat (limited to 'include/net/gre.h')
| -rw-r--r-- | include/net/gre.h | 51 | 
1 files changed, 51 insertions, 0 deletions
diff --git a/include/net/gre.h b/include/net/gre.h index 82665474bcb..9f03a390c82 100644 --- a/include/net/gre.h +++ b/include/net/gre.h @@ -2,6 +2,7 @@  #define __LINUX_GRE_H  #include <linux/skbuff.h> +#include <net/ip_tunnels.h>  #define GREPROTO_CISCO		0  #define GREPROTO_PPTP		1 @@ -12,7 +13,57 @@ struct gre_protocol {  	void (*err_handler)(struct sk_buff *skb, u32 info);  }; +struct gre_base_hdr { +	__be16 flags; +	__be16 protocol; +}; +#define GRE_HEADER_SECTION 4 +  int gre_add_protocol(const struct gre_protocol *proto, u8 version);  int gre_del_protocol(const struct gre_protocol *proto, u8 version); +static inline __be16 gre_flags_to_tnl_flags(__be16 flags) +{ +	__be16 tflags = 0; + +	if (flags & GRE_CSUM) +		tflags |= TUNNEL_CSUM; +	if (flags & GRE_ROUTING) +		tflags |= TUNNEL_ROUTING; +	if (flags & GRE_KEY) +		tflags |= TUNNEL_KEY; +	if (flags & GRE_SEQ) +		tflags |= TUNNEL_SEQ; +	if (flags & GRE_STRICT) +		tflags |= TUNNEL_STRICT; +	if (flags & GRE_REC) +		tflags |= TUNNEL_REC; +	if (flags & GRE_VERSION) +		tflags |= TUNNEL_VERSION; + +	return tflags; +} + +static inline __be16 tnl_flags_to_gre_flags(__be16 tflags) +{ +	__be16 flags = 0; + +	if (tflags & TUNNEL_CSUM) +		flags |= GRE_CSUM; +	if (tflags & TUNNEL_ROUTING) +		flags |= GRE_ROUTING; +	if (tflags & TUNNEL_KEY) +		flags |= GRE_KEY; +	if (tflags & TUNNEL_SEQ) +		flags |= GRE_SEQ; +	if (tflags & TUNNEL_STRICT) +		flags |= GRE_STRICT; +	if (tflags & TUNNEL_REC) +		flags |= GRE_REC; +	if (tflags & TUNNEL_VERSION) +		flags |= GRE_VERSION; + +	return flags; +} +  #endif  |