[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freebsd-hackers
Subject:    Problem with lagg driver?
From:       "Newpol, Richard" <rnewpol () panasas ! com>
Date:       2013-08-01 19:18:08
Message-ID: 1A778AD3F807B340B7EB1BD1B9C196773D6560C0 () zenyatta ! int ! panasas ! com
[Download RAW message or body]

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
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic