Update setup_udp_tunnel_sock() to handle ipv6 sockets.

Signed-off-by: Pravin B Shelar <pshe...@ovn.org>
Acked-by: Jesse Gross <je...@kernel.org>
---
 datapath/linux/compat/include/net/udp_tunnel.h | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/datapath/linux/compat/include/net/udp_tunnel.h 
b/datapath/linux/compat/include/net/udp_tunnel.h
index 7befd2d..08921e1 100644
--- a/datapath/linux/compat/include/net/udp_tunnel.h
+++ b/datapath/linux/compat/include/net/udp_tunnel.h
@@ -4,6 +4,7 @@
 #include <linux/version.h>
 #include <linux/kconfig.h>
 
+#include <net/addrconf.h>
 #include <net/dst_metadata.h>
 #include <linux/netdev_features.h>
 
@@ -99,7 +100,20 @@ int rpl_udp_tunnel_xmit_skb(struct rtable *rt,
 #define udp_tunnel_sock_release rpl_udp_tunnel_sock_release
 void rpl_udp_tunnel_sock_release(struct socket *sock);
 
-#define udp_tunnel_encap_enable(sock) udp_encap_enable()
+#define udp_tunnel_encap_enable rpl_udp_tunnel_encap_enable
+static inline void udp_tunnel_encap_enable(struct socket *sock)
+{
+#if IS_ENABLED(CONFIG_IPV6)
+       if (sock->sk->sk_family == PF_INET6)
+#ifdef HAVE_IPV6_STUB
+               ipv6_stub->udpv6_encap_enable();
+#else
+               udpv6_encap_enable();
+#endif
+       else
+#endif
+               udp_encap_enable();
+}
 
 #if IS_ENABLED(CONFIG_IPV6)
 #define udp_tunnel6_xmit_skb rpl_udp_tunnel6_xmit_skb
-- 
1.9.1

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to