On Sat, Nov 14, 2020 at 10:17 AM Jakub Kicinski <k...@kernel.org> wrote: > > 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? > Making it per netns would not be very useful since its effect is only during netns creation.
> > +netdev_loopback_state > > +--------------------- > > loopback_init_state ? > That's fine, thanks for the suggestion. > > +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? I'm not sure if any and didn't see any issues in our usage / tests. I'm not even sure anyone is watching/monitoring for lo status as such.