[NET]: Dynamically allocate the loopback device, part 1.
This patch replaces all occurences to the static variable loopback_dev to a pointer loopback_dev. That provides the mindless, trivial, uninteressting change part for the dynamic allocation for the loopback. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com> Acked-By: Kirill Korotaev <dev@sw.ru> Acked-by: Benjamin Thery <benjamin.thery@bull.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
5568296573
commit
de3cb747ff
@@ -1402,8 +1402,8 @@ static void ipv4_dst_ifdown(struct dst_entry *dst, struct net_device *dev,
|
||||
{
|
||||
struct rtable *rt = (struct rtable *) dst;
|
||||
struct in_device *idev = rt->idev;
|
||||
if (dev != &loopback_dev && idev && idev->dev == dev) {
|
||||
struct in_device *loopback_idev = in_dev_get(&loopback_dev);
|
||||
if (dev != loopback_dev && idev && idev->dev == dev) {
|
||||
struct in_device *loopback_idev = in_dev_get(loopback_dev);
|
||||
if (loopback_idev) {
|
||||
rt->idev = loopback_idev;
|
||||
in_dev_put(idev);
|
||||
@@ -1555,7 +1555,7 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr,
|
||||
#endif
|
||||
rth->rt_iif =
|
||||
rth->fl.iif = dev->ifindex;
|
||||
rth->u.dst.dev = &loopback_dev;
|
||||
rth->u.dst.dev = loopback_dev;
|
||||
dev_hold(rth->u.dst.dev);
|
||||
rth->idev = in_dev_get(rth->u.dst.dev);
|
||||
rth->fl.oif = 0;
|
||||
@@ -1812,7 +1812,7 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
|
||||
if (res.type == RTN_LOCAL) {
|
||||
int result;
|
||||
result = fib_validate_source(saddr, daddr, tos,
|
||||
loopback_dev.ifindex,
|
||||
loopback_dev->ifindex,
|
||||
dev, &spec_dst, &itag);
|
||||
if (result < 0)
|
||||
goto martian_source;
|
||||
@@ -1879,7 +1879,7 @@ local_input:
|
||||
#endif
|
||||
rth->rt_iif =
|
||||
rth->fl.iif = dev->ifindex;
|
||||
rth->u.dst.dev = &loopback_dev;
|
||||
rth->u.dst.dev = loopback_dev;
|
||||
dev_hold(rth->u.dst.dev);
|
||||
rth->idev = in_dev_get(rth->u.dst.dev);
|
||||
rth->rt_gateway = daddr;
|
||||
@@ -2149,7 +2149,7 @@ static int ip_route_output_slow(struct rtable **rp, const struct flowi *oldflp)
|
||||
RT_SCOPE_UNIVERSE),
|
||||
} },
|
||||
.mark = oldflp->mark,
|
||||
.iif = loopback_dev.ifindex,
|
||||
.iif = loopback_dev->ifindex,
|
||||
.oif = oldflp->oif };
|
||||
struct fib_result res;
|
||||
unsigned flags = 0;
|
||||
@@ -2243,9 +2243,9 @@ static int ip_route_output_slow(struct rtable **rp, const struct flowi *oldflp)
|
||||
fl.fl4_dst = fl.fl4_src = htonl(INADDR_LOOPBACK);
|
||||
if (dev_out)
|
||||
dev_put(dev_out);
|
||||
dev_out = &loopback_dev;
|
||||
dev_out = loopback_dev;
|
||||
dev_hold(dev_out);
|
||||
fl.oif = loopback_dev.ifindex;
|
||||
fl.oif = loopback_dev->ifindex;
|
||||
res.type = RTN_LOCAL;
|
||||
flags |= RTCF_LOCAL;
|
||||
goto make_route;
|
||||
@@ -2290,7 +2290,7 @@ static int ip_route_output_slow(struct rtable **rp, const struct flowi *oldflp)
|
||||
fl.fl4_src = fl.fl4_dst;
|
||||
if (dev_out)
|
||||
dev_put(dev_out);
|
||||
dev_out = &loopback_dev;
|
||||
dev_out = loopback_dev;
|
||||
dev_hold(dev_out);
|
||||
fl.oif = dev_out->ifindex;
|
||||
if (res.fi)
|
||||
|
Reference in New Issue
Block a user