|
@@ -4,6 +4,7 @@
|
|
|
#include <linux/if_tunnel.h>
|
|
|
#include <linux/netdevice.h>
|
|
|
#include <linux/skbuff.h>
|
|
|
+#include <linux/socket.h>
|
|
|
#include <linux/types.h>
|
|
|
#include <linux/u64_stats_sync.h>
|
|
|
#include <net/dsfield.h>
|
|
@@ -52,6 +53,7 @@ struct ip_tunnel_key {
|
|
|
|
|
|
/* Flags for ip_tunnel_info mode. */
|
|
|
#define IP_TUNNEL_INFO_TX 0x01 /* represents tx tunnel parameters */
|
|
|
+#define IP_TUNNEL_INFO_IPV6 0x02 /* key contains IPv6 addresses */
|
|
|
|
|
|
struct ip_tunnel_info {
|
|
|
struct ip_tunnel_key key;
|
|
@@ -208,6 +210,8 @@ static inline void __ip_tunnel_info_init(struct ip_tunnel_info *tun_info,
|
|
|
|
|
|
tun_info->options = opts;
|
|
|
tun_info->options_len = opts_len;
|
|
|
+
|
|
|
+ tun_info->mode = 0;
|
|
|
}
|
|
|
|
|
|
static inline void ip_tunnel_info_init(struct ip_tunnel_info *tun_info,
|
|
@@ -221,6 +225,12 @@ static inline void ip_tunnel_info_init(struct ip_tunnel_info *tun_info,
|
|
|
tun_id, tun_flags, opts, opts_len);
|
|
|
}
|
|
|
|
|
|
+static inline unsigned short ip_tunnel_info_af(const struct ip_tunnel_info
|
|
|
+ *tun_info)
|
|
|
+{
|
|
|
+ return tun_info->mode & IP_TUNNEL_INFO_IPV6 ? AF_INET6 : AF_INET;
|
|
|
+}
|
|
|
+
|
|
|
#ifdef CONFIG_INET
|
|
|
|
|
|
int ip_tunnel_init(struct net_device *dev);
|