Adding an address to a downed LAGG interface breaks it?

Newpol, Richard rnewpol at panasas.com
Thu Aug 1 16:34:32 UTC 2013


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 to bring the interface UP it can't reach the desired networks.

Turns out that the problem occurs because the lagg driver silently passes the SIOCSIFADDR ioctl to the "ether_ioctl" handler, which in turn always sets 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 handling 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 the implications. The first way would be for the lagg driver to correctly bring itself up when the first address is added to it. The second way would be for the lagg driver to preserve the state of IFF_FLAG when handling SIOCSIFADDR. I like the second way because it is less of an overall behaviour change from the current, but the first way seems more correct.

Rich Newpol
Panasas



More information about the freebsd-net mailing list