diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2007-09-27 01:10:56 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:52:49 -0400 |
commit | 2774c7aba6c97a2535be3309a2209770953780b3 (patch) | |
tree | 9327c795707f6d723c6395c31e1c060e70b5e0db /net/core | |
parent | 0cc217e16cb8ca8ef2544363571fce94259900e0 (diff) |
[NET]: Make the loopback device per network namespace.
This patch makes loopback_dev per network namespace. Adding
code to create a different loopback device for each network
namespace and adding the code to free a loopback device
when a network namespace exits.
This patch modifies all users the loopback_dev so they
access it as init_net.loopback_dev, keeping all of the
code compiling and working. A later pass will be needed to
update the users to use something other than the initial network
namespace.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/dst.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/core/dst.c b/net/core/dst.c index ad5ffa19d809..16958e64e577 100644 --- a/net/core/dst.c +++ b/net/core/dst.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/types.h> | 18 | #include <linux/types.h> |
19 | #include <net/net_namespace.h> | 19 | #include <net/net_namespace.h> |
20 | 20 | ||
21 | #include <net/net_namespace.h> | ||
21 | #include <net/dst.h> | 22 | #include <net/dst.h> |
22 | 23 | ||
23 | /* | 24 | /* |
@@ -278,11 +279,11 @@ static inline void dst_ifdown(struct dst_entry *dst, struct net_device *dev, | |||
278 | if (!unregister) { | 279 | if (!unregister) { |
279 | dst->input = dst->output = dst_discard; | 280 | dst->input = dst->output = dst_discard; |
280 | } else { | 281 | } else { |
281 | dst->dev = loopback_dev; | 282 | dst->dev = init_net.loopback_dev; |
282 | dev_hold(dst->dev); | 283 | dev_hold(dst->dev); |
283 | dev_put(dev); | 284 | dev_put(dev); |
284 | if (dst->neighbour && dst->neighbour->dev == dev) { | 285 | if (dst->neighbour && dst->neighbour->dev == dev) { |
285 | dst->neighbour->dev = loopback_dev; | 286 | dst->neighbour->dev = init_net.loopback_dev; |
286 | dev_put(dev); | 287 | dev_put(dev); |
287 | dev_hold(dst->neighbour->dev); | 288 | dev_hold(dst->neighbour->dev); |
288 | } | 289 | } |