diff options
author | Stephen Hemminger <shemminger@vyatta.com> | 2008-11-20 23:33:56 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-11-20 23:33:56 -0500 |
commit | 1326c3d5a4b792a2b15877feb7fb691f8945d203 (patch) | |
tree | ec87c30b83541f2f96c864e4fc7096fcec9490b3 /net/ipv6/ip6_tunnel.c | |
parent | 23a12b14715e2dcd34dc8002927263ad3437344c (diff) |
ipv6: convert tunnels to net_device_ops
Like IPV4, convert the tunnel virtual devices to use net_device_ops.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/ip6_tunnel.c')
-rw-r--r-- | net/ipv6/ip6_tunnel.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c index 64ce3d33d9c6..adfcd6527921 100644 --- a/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c | |||
@@ -74,8 +74,8 @@ MODULE_LICENSE("GPL"); | |||
74 | (addr)->s6_addr32[2] ^ (addr)->s6_addr32[3]) & \ | 74 | (addr)->s6_addr32[2] ^ (addr)->s6_addr32[3]) & \ |
75 | (HASH_SIZE - 1)) | 75 | (HASH_SIZE - 1)) |
76 | 76 | ||
77 | static int ip6_fb_tnl_dev_init(struct net_device *dev); | 77 | static void ip6_fb_tnl_dev_init(struct net_device *dev); |
78 | static int ip6_tnl_dev_init(struct net_device *dev); | 78 | static void ip6_tnl_dev_init(struct net_device *dev); |
79 | static void ip6_tnl_dev_setup(struct net_device *dev); | 79 | static void ip6_tnl_dev_setup(struct net_device *dev); |
80 | 80 | ||
81 | static int ip6_tnl_net_id; | 81 | static int ip6_tnl_net_id; |
@@ -249,7 +249,7 @@ static struct ip6_tnl *ip6_tnl_create(struct net *net, struct ip6_tnl_parm *p) | |||
249 | } | 249 | } |
250 | 250 | ||
251 | t = netdev_priv(dev); | 251 | t = netdev_priv(dev); |
252 | dev->init = ip6_tnl_dev_init; | 252 | ip6_tnl_dev_init(dev); |
253 | t->parms = *p; | 253 | t->parms = *p; |
254 | 254 | ||
255 | if ((err = register_netdevice(dev)) < 0) | 255 | if ((err = register_netdevice(dev)) < 0) |
@@ -1306,6 +1306,14 @@ ip6_tnl_change_mtu(struct net_device *dev, int new_mtu) | |||
1306 | return 0; | 1306 | return 0; |
1307 | } | 1307 | } |
1308 | 1308 | ||
1309 | |||
1310 | static const struct net_device_ops ip6_tnl_netdev_ops = { | ||
1311 | .ndo_uninit = ip6_tnl_dev_uninit, | ||
1312 | .ndo_start_xmit = ip6_tnl_xmit, | ||
1313 | .ndo_do_ioctl = ip6_tnl_ioctl, | ||
1314 | .ndo_change_mtu = ip6_tnl_change_mtu, | ||
1315 | }; | ||
1316 | |||
1309 | /** | 1317 | /** |
1310 | * ip6_tnl_dev_setup - setup virtual tunnel device | 1318 | * ip6_tnl_dev_setup - setup virtual tunnel device |
1311 | * @dev: virtual device associated with tunnel | 1319 | * @dev: virtual device associated with tunnel |
@@ -1316,11 +1324,8 @@ ip6_tnl_change_mtu(struct net_device *dev, int new_mtu) | |||
1316 | 1324 | ||
1317 | static void ip6_tnl_dev_setup(struct net_device *dev) | 1325 | static void ip6_tnl_dev_setup(struct net_device *dev) |
1318 | { | 1326 | { |
1319 | dev->uninit = ip6_tnl_dev_uninit; | 1327 | dev->netdev_ops = &ip6_tnl_netdev_ops; |
1320 | dev->destructor = free_netdev; | 1328 | dev->destructor = free_netdev; |
1321 | dev->hard_start_xmit = ip6_tnl_xmit; | ||
1322 | dev->do_ioctl = ip6_tnl_ioctl; | ||
1323 | dev->change_mtu = ip6_tnl_change_mtu; | ||
1324 | 1329 | ||
1325 | dev->type = ARPHRD_TUNNEL6; | 1330 | dev->type = ARPHRD_TUNNEL6; |
1326 | dev->hard_header_len = LL_MAX_HEADER + sizeof (struct ipv6hdr); | 1331 | dev->hard_header_len = LL_MAX_HEADER + sizeof (struct ipv6hdr); |
@@ -1349,13 +1354,11 @@ ip6_tnl_dev_init_gen(struct net_device *dev) | |||
1349 | * @dev: virtual device associated with tunnel | 1354 | * @dev: virtual device associated with tunnel |
1350 | **/ | 1355 | **/ |
1351 | 1356 | ||
1352 | static int | 1357 | static void ip6_tnl_dev_init(struct net_device *dev) |
1353 | ip6_tnl_dev_init(struct net_device *dev) | ||
1354 | { | 1358 | { |
1355 | struct ip6_tnl *t = netdev_priv(dev); | 1359 | struct ip6_tnl *t = netdev_priv(dev); |
1356 | ip6_tnl_dev_init_gen(dev); | 1360 | ip6_tnl_dev_init_gen(dev); |
1357 | ip6_tnl_link_config(t); | 1361 | ip6_tnl_link_config(t); |
1358 | return 0; | ||
1359 | } | 1362 | } |
1360 | 1363 | ||
1361 | /** | 1364 | /** |
@@ -1365,8 +1368,7 @@ ip6_tnl_dev_init(struct net_device *dev) | |||
1365 | * Return: 0 | 1368 | * Return: 0 |
1366 | **/ | 1369 | **/ |
1367 | 1370 | ||
1368 | static int | 1371 | static void ip6_fb_tnl_dev_init(struct net_device *dev) |
1369 | ip6_fb_tnl_dev_init(struct net_device *dev) | ||
1370 | { | 1372 | { |
1371 | struct ip6_tnl *t = netdev_priv(dev); | 1373 | struct ip6_tnl *t = netdev_priv(dev); |
1372 | struct net *net = dev_net(dev); | 1374 | struct net *net = dev_net(dev); |
@@ -1376,7 +1378,6 @@ ip6_fb_tnl_dev_init(struct net_device *dev) | |||
1376 | t->parms.proto = IPPROTO_IPV6; | 1378 | t->parms.proto = IPPROTO_IPV6; |
1377 | dev_hold(dev); | 1379 | dev_hold(dev); |
1378 | ip6n->tnls_wc[0] = t; | 1380 | ip6n->tnls_wc[0] = t; |
1379 | return 0; | ||
1380 | } | 1381 | } |
1381 | 1382 | ||
1382 | static struct xfrm6_tunnel ip4ip6_handler = { | 1383 | static struct xfrm6_tunnel ip4ip6_handler = { |
@@ -1429,7 +1430,7 @@ static int ip6_tnl_init_net(struct net *net) | |||
1429 | if (!ip6n->fb_tnl_dev) | 1430 | if (!ip6n->fb_tnl_dev) |
1430 | goto err_alloc_dev; | 1431 | goto err_alloc_dev; |
1431 | 1432 | ||
1432 | ip6n->fb_tnl_dev->init = ip6_fb_tnl_dev_init; | 1433 | ip6_fb_tnl_dev_init(ip6n->fb_tnl_dev); |
1433 | dev_net_set(ip6n->fb_tnl_dev, net); | 1434 | dev_net_set(ip6n->fb_tnl_dev, net); |
1434 | 1435 | ||
1435 | err = register_netdev(ip6n->fb_tnl_dev); | 1436 | err = register_netdev(ip6n->fb_tnl_dev); |