aboutsummaryrefslogtreecommitdiffstats
path: root/net/core
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2007-09-27 01:10:56 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-10 19:52:49 -0400
commit2774c7aba6c97a2535be3309a2209770953780b3 (patch)
tree9327c795707f6d723c6395c31e1c060e70b5e0db /net/core
parent0cc217e16cb8ca8ef2544363571fce94259900e0 (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.c5
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 }