On Wed, 11 Nov 2020 12:43:08 -0800 Jian Yang wrote: > From: Mahesh Bandewar <mahe...@google.com> > > Traditionally loopback devices comes up with initial state as DOWN for > any new network-namespace. This would mean that anyone needing this > device (which is mostly true except sandboxes where networking in not > needed at all), would have to bring this UP by issuing something like > 'ip link set lo up' which can be avoided if the initial state can be set > as UP. Also ICMP error propagation needs loopback to be UP. > > The default value for this sysctl is set to ZERO which will preserve the > backward compatible behavior for the root-netns while changing the > sysctl will only alter the behavior of the newer network namespaces.
Any reason why the new sysctl itself is not per netns? > +netdev_loopback_state > +--------------------- loopback_init_state ? > +Controls the loopback device initial state for any new network namespaces. By > +default, we keep the initial state as DOWN. > + > +If set to 1, the loopback device will be brought UP during namespace > creation. > +This will only apply to all new network namespaces. > + > +Default : 0 (for compatibility reasons) > + > netdev_max_backlog > ------------------ > > diff --git a/drivers/net/loopback.c b/drivers/net/loopback.c > index a1c77cc00416..76dc92ac65a2 100644 > --- a/drivers/net/loopback.c > +++ b/drivers/net/loopback.c > @@ -219,6 +219,13 @@ static __net_init int loopback_net_init(struct net *net) > > BUG_ON(dev->ifindex != LOOPBACK_IFINDEX); > net->loopback_dev = dev; > + > + if (sysctl_netdev_loopback_state) { > + /* Bring loopback device UP */ > + rtnl_lock(); > + dev_open(dev, NULL); > + rtnl_unlock(); > + } The only concern I have here is that it breaks notification ordering. Is there precedent for NETDEV_UP to be generated before all pernet ops ->init was called?