On Sun, Nov 14, 2021 at 07:04:42PM -0700, Theo de Raadt wrote:
> I think physical interfaces should come up when something is configured
> on them, but virtual interfaces shouldn't -- mostly because the order of
> configuration is often muddled.

So "inet6 2001:db8::1" in hostname.em0 will do the trick but
hostname.vport0 would need another "up" for the same behaviour:  that's
rather confusing me as a user.


> David Gwynne <da...@gwynne.id.au> wrote:
> 
> > On Sat, Nov 13, 2021 at 11:59:59PM +0000, Klemens Nanni wrote:
> > > Practically all interfaces pull itself up when IPs get assigned, but
> > > vport(4) does not.
> > 
> > Yes, I do (or don't do) this very deliberately when I get the chance.
> > 
> > > This broke IPv4 networking for me on a router I switched from bridge(4)
> > > to veb(4) because hostname.vport0 only contained the equivalent of
> > > 
> > >   descr LAN
> > >   inet 192.0.2.1
> > >   inet6 2001:db8::1
> > > 
> > > e.g. the explicit "up" was missing.
> > > 
> > > dhcpd(8) only considers UP interfaces to listen on during start;
> > > being the only interface it could potentially listen on, dhcpd thus
> > > ignored vport0 and failed to start.
> > > 
> > > `ifconfig vport0 up && rcctl restart dhcpd' fixed this.
> > > Adding "up" to thostname.vport0 also fixed it.
> > > 
> > > Nonetheless, vport should UP itself as the rest does.
> > 
> > My counter argument is that no interface should implicitly bring itself
> > up when an address is configured because it has been a road block to
> > figuring out how to lock the ioctl paths better, and it confuses error
> > handling. If address config works, but the interface fails to come up,
> > the address remains configured but we report an error. But it looks like
> > configuring an address failed? Wat.
> > 
> > I've suggested previously that netstart should handle bringing an
> > interface up. look for "netstart: implicit up and explicit down for
> > hostname.if conf files" on tech@. I didn't hanve the energy to push
> > it forward though.
> > 
> > dhcpd should cope with an interface being down too. It should be about
> > whetherthe addresses are right more than if the interface is up or not.
> > 
> > > 
> > > OK?
> > > 
> > > Index: net/if_veb.c
> > > ===================================================================
> > > RCS file: /cvs/src/sys/net/if_veb.c,v
> > > retrieving revision 1.21
> > > diff -u -p -r1.21 if_veb.c
> > > --- net/if_veb.c  8 Nov 2021 04:15:46 -0000       1.21
> > > +++ net/if_veb.c  13 Nov 2021 23:47:58 -0000
> > > @@ -2122,6 +2122,10 @@ vport_ioctl(struct ifnet *ifp, u_long cm
> > >           return (ENXIO);
> > >  
> > >   switch (cmd) {
> > > + case SIOCSIFADDR:
> > > +         ifp->if_flags |= IFF_UP;
> > > +         /* FALLTHROUGH */
> > > +
> > >   case SIOCSIFFLAGS:
> > >           if (ISSET(ifp->if_flags, IFF_UP)) {
> > >                   if (!ISSET(ifp->if_flags, IFF_RUNNING))
> > > 
> > 
> 

Reply via email to