Date: Thu, 1 Aug 2013 19:18:08 +0000 From: "Newpol, Richard" <rnewpol@panasas.com> To: "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org> Subject: Problem with lagg driver? Message-ID: <1A778AD3F807B340B7EB1BD1B9C196773D6560C0@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?1A778AD3F807B340B7EB1BD1B9C196773D6560C0>