ipip,gre,vti,sit: implement ndo_get_iflink
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>
This commit is contained in:
		
					parent
					
						
							
								ecf2c06a88
							
						
					
				
			
			
				commit
				
					
						1e99584b91
					
				
			
		
					 6 changed files with 14 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue