Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 1 Jan 2013 10:06:29 -0800
From:      Garrett Cooper <yanegomi@gmail.com>
To:        Mark Atkinson <atkin901@gmail.com>
Cc:        freebsd-current@freebsd.org
Subject:   Re: loopback interface broken on current
Message-ID:  <CAGH67wTuzSj7QRB7ph76N-Y6OquAjfeNa2eOKEghzfF-Fxi4sg@mail.gmail.com>
In-Reply-To: <kbv7c5$l7t$1@ger.gmane.org>
References:  <201212271705.qBRH5VHU006208@pozo.com> <20130101102255.GA25661@FreeBSD.org> <kbv7c5$l7t$1@ger.gmane.org>

next in thread | previous in thread | raw e-mail | index | archive | help
    Maybe it's this commit?
HTH,
-Garrett

------------------------------------------------------------------------
r244678 | glebius | 2012-12-25 05:01:58 -0800 (Tue, 25 Dec 2012) | 17 lines

  The SIOCSIFFLAGS ioctl handler runs if_up()/if_down() that notify
all interested parties in case if interface flag IFF_UP has changed.

  However, not only SIOCSIFFLAGS can raise the flag, but SIOCAIFADDR
and SIOCAIFADDR_IN6 can, too. The actual |= is done not in the protocol
code, but in code of interface drivers. To fix this historical layering
violation, we will check whether ifp->if_ioctl(SIOCSIFADDR) raised the
IFF_UP flag, and if it did, run the if_up() handler.

  This fixes configuring an address under CARP control on an interface
that was initially !IFF_UP.

P.S. I intentionally omitted handling the IFF_SMART flag. This flag was
never ever used in any driver since it was introduced, and since it
means another layering violation, it should be garbage collected instead
of pretended to be supported.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGH67wTuzSj7QRB7ph76N-Y6OquAjfeNa2eOKEghzfF-Fxi4sg>