ipip,gre,vti,sit: implement ndo_get_iflink
authorNicolas Dichtel <nicolas.dichtel@6wind.com>
Thu, 2 Apr 2015 15:07:02 +0000 (17:07 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 2 Apr 2015 18:05:00 +0000 (14:05 -0400)
Don't use dev->iflink anymore.

CC: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/ip_tunnels.h
net/ipv4/ip_gre.c
net/ipv4/ip_tunnel.c
net/ipv4/ip_vti.c
net/ipv4/ipip.c
net/ipv6/sit.c

index 2c47061a6954543abe462ece352e93cdd0538033..d8214cb88bbcfa6524a7d1900c543a45a05f7f31 100644 (file)
@@ -142,6 +142,7 @@ int ip_tunnel_init(struct net_device *dev);
 void ip_tunnel_uninit(struct net_device *dev);
 void  ip_tunnel_dellink(struct net_device *dev, struct list_head *head);
 struct net *ip_tunnel_get_link_net(const struct net_device *dev);
+int ip_tunnel_get_iflink(const struct net_device *dev);
 int ip_tunnel_init_net(struct net *net, int ip_tnl_net_id,
                       struct rtnl_link_ops *ops, char *devname);
 
index 0eb2a040a83012fb92dd9f4f0639e5a5ad2dc797..1060ca0bc23a963fbeea5a601b36d68f756bf406 100644 (file)
@@ -456,6 +456,7 @@ static const struct net_device_ops ipgre_netdev_ops = {
        .ndo_do_ioctl           = ipgre_tunnel_ioctl,
        .ndo_change_mtu         = ip_tunnel_change_mtu,
        .ndo_get_stats64        = ip_tunnel_get_stats64,
+       .ndo_get_iflink         = ip_tunnel_get_iflink,
 };
 
 #define GRE_FEATURES (NETIF_F_SG |             \
@@ -686,6 +687,7 @@ static const struct net_device_ops gre_tap_netdev_ops = {
        .ndo_validate_addr      = eth_validate_addr,
        .ndo_change_mtu         = ip_tunnel_change_mtu,
        .ndo_get_stats64        = ip_tunnel_get_stats64,
+       .ndo_get_iflink         = ip_tunnel_get_iflink,
 };
 
 static void ipgre_tap_setup(struct net_device *dev)
index 2cd08280c77bc33cac90c62e0f6f8f36343a768d..4bb7252110a6f21a08a090f41e7aec8c349e43f8 100644 (file)
@@ -389,7 +389,6 @@ static int ip_tunnel_bind_dev(struct net_device *dev)
                hlen = tdev->hard_header_len + tdev->needed_headroom;
                mtu = tdev->mtu;
        }
-       dev->iflink = tunnel->parms.link;
 
        dev->needed_headroom = t_hlen + hlen;
        mtu -= (dev->hard_header_len + t_hlen);
@@ -980,6 +979,14 @@ struct net *ip_tunnel_get_link_net(const struct net_device *dev)
 }
 EXPORT_SYMBOL(ip_tunnel_get_link_net);
 
+int ip_tunnel_get_iflink(const struct net_device *dev)
+{
+       struct ip_tunnel *tunnel = netdev_priv(dev);
+
+       return tunnel->parms.link;
+}
+EXPORT_SYMBOL(ip_tunnel_get_iflink);
+
 int ip_tunnel_init_net(struct net *net, int ip_tnl_net_id,
                                  struct rtnl_link_ops *ops, char *devname)
 {
index 5a6e27054f0a87e051cd995ab50952273d09c2b5..c4f93c0d11047b0b96bf9fbcb17cadfa21cda52e 100644 (file)
@@ -341,6 +341,7 @@ static const struct net_device_ops vti_netdev_ops = {
        .ndo_do_ioctl   = vti_tunnel_ioctl,
        .ndo_change_mtu = ip_tunnel_change_mtu,
        .ndo_get_stats64 = ip_tunnel_get_stats64,
+       .ndo_get_iflink = ip_tunnel_get_iflink,
 };
 
 static void vti_tunnel_setup(struct net_device *dev)
@@ -361,7 +362,6 @@ static int vti_tunnel_init(struct net_device *dev)
        dev->hard_header_len    = LL_MAX_HEADER + sizeof(struct iphdr);
        dev->mtu                = ETH_DATA_LEN;
        dev->flags              = IFF_NOARP;
-       dev->iflink             = 0;
        dev->addr_len           = 4;
        dev->features           |= NETIF_F_LLTX;
        netif_keep_dst(dev);
index bfbcc85c02ee7b0897826e5909ff551f62cc50b0..5c81f6e408422064d36950404c22e954147ec407 100644 (file)
@@ -272,6 +272,7 @@ static const struct net_device_ops ipip_netdev_ops = {
        .ndo_do_ioctl   = ipip_tunnel_ioctl,
        .ndo_change_mtu = ip_tunnel_change_mtu,
        .ndo_get_stats64 = ip_tunnel_get_stats64,
+       .ndo_get_iflink = ip_tunnel_get_iflink,
 };
 
 #define IPIP_FEATURES (NETIF_F_SG |            \
@@ -286,7 +287,6 @@ static void ipip_tunnel_setup(struct net_device *dev)
 
        dev->type               = ARPHRD_TUNNEL;
        dev->flags              = IFF_NOARP;
-       dev->iflink             = 0;
        dev->addr_len           = 4;
        dev->features           |= NETIF_F_LLTX;
        netif_keep_dst(dev);
index e6b9f51b15e8f31abcf7dc62180f3b7afc8427a8..6cf2026a9cea849c067d7388bc23f5d3a20cbeac 100644 (file)
@@ -1076,7 +1076,6 @@ static void ipip6_tunnel_bind_dev(struct net_device *dev)
                if (dev->mtu < IPV6_MIN_MTU)
                        dev->mtu = IPV6_MIN_MTU;
        }
-       dev->iflink = tunnel->parms.link;
 }
 
 static void ipip6_tunnel_update(struct ip_tunnel *t, struct ip_tunnel_parm *p)
@@ -1336,6 +1335,7 @@ static const struct net_device_ops ipip6_netdev_ops = {
        .ndo_do_ioctl   = ipip6_tunnel_ioctl,
        .ndo_change_mtu = ipip6_tunnel_change_mtu,
        .ndo_get_stats64 = ip_tunnel_get_stats64,
+       .ndo_get_iflink = ip_tunnel_get_iflink,
 };
 
 static void ipip6_dev_free(struct net_device *dev)
@@ -1366,7 +1366,6 @@ static void ipip6_tunnel_setup(struct net_device *dev)
        dev->mtu                = ETH_DATA_LEN - t_hlen;
        dev->flags              = IFF_NOARP;
        netif_keep_dst(dev);
-       dev->iflink             = 0;
        dev->addr_len           = 4;
        dev->features           |= NETIF_F_LLTX;
        dev->features           |= SIT_FEATURES;