diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2008-04-16 04:24:13 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-04-16 04:24:13 -0400 |
commit | 554eb27782d4bb79e0a286a08ecafb81f758058c (patch) | |
tree | b330c16faef8614928e0c260f0f966aeb9afb8a3 /net/ipv6/ip6_tunnel.c | |
parent | 2f7f54b725f1a93f0a4daace1a924bee382b33b6 (diff) |
[IP6TUNNEL]: Allow to create IP6 tunnels in net namespaces.
And no need in some IPPROTO_XXX enabling, since ipv6 code
doesn't have any filtering.
So, just set proper net and mark device with NETNS_LOCAL.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
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 | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c index d9b27215909..2bda3ba100b 100644 --- a/net/ipv6/ip6_tunnel.c +++ b/net/ipv6/ip6_tunnel.c | |||
@@ -243,6 +243,8 @@ static struct ip6_tnl *ip6_tnl_create(struct net *net, struct ip6_tnl_parm *p) | |||
243 | if (dev == NULL) | 243 | if (dev == NULL) |
244 | goto failed; | 244 | goto failed; |
245 | 245 | ||
246 | dev_net_set(dev, net); | ||
247 | |||
246 | if (strchr(name, '%')) { | 248 | if (strchr(name, '%')) { |
247 | if (dev_alloc_name(dev, name) < 0) | 249 | if (dev_alloc_name(dev, name) < 0) |
248 | goto failed_free; | 250 | goto failed_free; |
@@ -1341,6 +1343,7 @@ static void ip6_tnl_dev_setup(struct net_device *dev) | |||
1341 | dev->mtu = ETH_DATA_LEN - sizeof (struct ipv6hdr); | 1343 | dev->mtu = ETH_DATA_LEN - sizeof (struct ipv6hdr); |
1342 | dev->flags |= IFF_NOARP; | 1344 | dev->flags |= IFF_NOARP; |
1343 | dev->addr_len = sizeof(struct in6_addr); | 1345 | dev->addr_len = sizeof(struct in6_addr); |
1346 | dev->features |= NETIF_F_NETNS_LOCAL; | ||
1344 | } | 1347 | } |
1345 | 1348 | ||
1346 | 1349 | ||