Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 1 Aug 2013 16:22:50 +0000
From:      "Newpol, Richard" <rnewpol@panasas.com>
To:        "freebsd-net@freebsd.org" <freebsd-net@freebsd.org>
Subject:   Adding an address to a downed LAGG interface breaks it?
Message-ID:  <1A778AD3F807B340B7EB1BD1B9C196773D655FE6@zenyatta.int.panasas.com>

next in thread | raw e-mail | index | archive | help
All,
We seem to have discovered a problem that occurs when adding an address (or=
 alias) to a DOWNed lagg interface. After adding an address, when you try t=
o bring the interface UP it can't reach the desired networks.

Turns out that the problem occurs because the lagg driver silently passes t=
he SIOCSIFADDR ioctl to the "ether_ioctl" handler, which in turn always set=
s the IFF_UP flag.

While this is usually ok (since ifconfig <if> <address> implies UP with the=
 first assigned address anyway), the lagg driver does not have the proper h=
andling to actually change state to UP on the first address, so it ends up =
in an inconsistent state. Then, when the user eventually does an "ifconfig =
lagg up" the default subnet routes are not added (because the "interface up=
" code sees that IFF_UP is already set).

So my first question - is this a known problem, or has it been addressed in=
 some other way?

Secondly, I can think of two ways to fix this, and was wondering what are t=
he implications. The first way would be for the lagg driver to correctly br=
ing itself up when the first address is added to it. The second way would b=
e for the lagg driver to preserve the state of IFF_FLAG when handling SIOCS=
IFADDR. I like the second way because it is less of an overall behaviour ch=
ange from the current, but the first way seems more correct.

Rich Newpol
Panasas




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