summaryrefslogtreecommitdiffstats
path: root/include/net/fou.h
diff options
context:
space:
mode:
authorTom Herbert <therbert@google.com>2014-11-04 09:06:51 -0800
committerDavid S. Miller <davem@davemloft.net>2014-11-05 16:30:02 -0500
commit63487babf08d6d67483c67ed21d8cea6674a44ec (patch)
treef0e11d54e33a689a25bed43f7bd3c720b49a6bcd /include/net/fou.h
parent890b7916d0965829ad1c457aa61f049a210c19f8 (diff)
downloadtalos-obmc-linux-63487babf08d6d67483c67ed21d8cea6674a44ec.tar.gz
talos-obmc-linux-63487babf08d6d67483c67ed21d8cea6674a44ec.zip
net: Move fou_build_header into fou.c and refactor
Move fou_build_header out of ip_tunnel.c and into fou.c splitting it up into fou_build_header, gue_build_header, and fou_build_udp. This allows for other users for TX of FOU or GUE. Change ip_tunnel_encap to call fou_build_header or gue_build_header based on the tunnel encapsulation type. Similarly, added fou_encap_hlen and gue_encap_hlen functions which are called by ip_encap_hlen. New net/fou.h has prototypes and defines for this. Added NET_FOU_IP_TUNNELS configuration. When this is set, IP tunnels can use FOU/GUE and fou module is also selected. Signed-off-by: Tom Herbert <therbert@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/fou.h')
-rw-r--r--include/net/fou.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/include/net/fou.h b/include/net/fou.h
new file mode 100644
index 000000000000..cf4ce8874f92
--- /dev/null
+++ b/include/net/fou.h
@@ -0,0 +1,26 @@
+#ifndef __NET_FOU_H
+#define __NET_FOU_H
+
+#include <linux/skbuff.h>
+
+#include <net/flow.h>
+#include <net/gue.h>
+#include <net/ip_tunnels.h>
+#include <net/udp.h>
+
+int fou_build_header(struct sk_buff *skb, struct ip_tunnel_encap *e,
+ u8 *protocol, struct flowi4 *fl4);
+int gue_build_header(struct sk_buff *skb, struct ip_tunnel_encap *e,
+ u8 *protocol, struct flowi4 *fl4);
+
+static size_t fou_encap_hlen(struct ip_tunnel_encap *e)
+{
+ return sizeof(struct udphdr);
+}
+
+static size_t gue_encap_hlen(struct ip_tunnel_encap *e)
+{
+ return sizeof(struct udphdr) + sizeof(struct guehdr);
+}
+
+#endif
OpenPOWER on IntegriCloud