[NET] NETNS: Omit net_device->nd_net without CONFIG_NET_NS.
Introduce per-net_device inlines: dev_net(), dev_net_set(). Without CONFIG_NET_NS, no namespace other than &init_net exists. Let's explicitly define them to help compiler optimizations. Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
This commit is contained in:
@@ -257,7 +257,7 @@ int fib_validate_source(__be32 src, __be32 dst, u8 tos, int oif,
|
||||
if (in_dev == NULL)
|
||||
goto e_inval;
|
||||
|
||||
net = dev->nd_net;
|
||||
net = dev_net(dev);
|
||||
if (fib_lookup(net, &fl, &res))
|
||||
goto last_resort;
|
||||
if (res.type != RTN_UNICAST)
|
||||
@@ -674,7 +674,7 @@ out:
|
||||
|
||||
static void fib_magic(int cmd, int type, __be32 dst, int dst_len, struct in_ifaddr *ifa)
|
||||
{
|
||||
struct net *net = ifa->ifa_dev->dev->nd_net;
|
||||
struct net *net = dev_net(ifa->ifa_dev->dev);
|
||||
struct fib_table *tb;
|
||||
struct fib_config cfg = {
|
||||
.fc_protocol = RTPROT_KERNEL,
|
||||
@@ -801,15 +801,15 @@ static void fib_del_ifaddr(struct in_ifaddr *ifa)
|
||||
fib_magic(RTM_DELROUTE, RTN_LOCAL, ifa->ifa_local, 32, prim);
|
||||
|
||||
/* Check, that this local address finally disappeared. */
|
||||
if (inet_addr_type(dev->nd_net, ifa->ifa_local) != RTN_LOCAL) {
|
||||
if (inet_addr_type(dev_net(dev), ifa->ifa_local) != RTN_LOCAL) {
|
||||
/* And the last, but not the least thing.
|
||||
We must flush stray FIB entries.
|
||||
|
||||
First of all, we scan fib_info list searching
|
||||
for stray nexthop entries, then ignite fib_flush.
|
||||
*/
|
||||
if (fib_sync_down_addr(dev->nd_net, ifa->ifa_local))
|
||||
fib_flush(dev->nd_net);
|
||||
if (fib_sync_down_addr(dev_net(dev), ifa->ifa_local))
|
||||
fib_flush(dev_net(dev));
|
||||
}
|
||||
}
|
||||
#undef LOCAL_OK
|
||||
@@ -899,7 +899,7 @@ static void nl_fib_lookup_exit(struct net *net)
|
||||
static void fib_disable_ip(struct net_device *dev, int force)
|
||||
{
|
||||
if (fib_sync_down_dev(dev, force))
|
||||
fib_flush(dev->nd_net);
|
||||
fib_flush(dev_net(dev));
|
||||
rt_cache_flush(0);
|
||||
arp_ifdown(dev);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user