I'm (easily) confused. Unless the specs have changed recently, the broadcast address of all 1's is just a special type of multicast adddress, that "all stations shall be able to recognize".
In looking at the code in etherdevice.h it looks like the test of is_multicast_ether_addr() is broken, because it will return false for the value ff:00:00:00:00:00 (for example), which is a valid multicast address. Or at least it used to be. If the definition of a multicast address has changed, then maybe the code is correct, but it should be documented better. On Tue, Dec 13, 2005 at 09:45:55AM -0800, Stephen Hemminger wrote: > On Mon, 12 Dec 2005 18:56:49 -0600 > Michael Ellerman <[EMAIL PROTECTED]> wrote: > > > Since a5fe736eaf9bae1b45317313de04b564441b94f2 (2.6.13-rc1 ish), > > is_valid_ether_addr() has been broken, because its assumption that > > FF:FF:FF:FF:FF:FF is a multicast address is wrong. Ouch. > > > > Signed-off-by: Michael Ellerman <[EMAIL PROTECTED]> > > --- > > > > include/linux/etherdevice.h | 6 +++--- > > 1 files changed, 3 insertions(+), 3 deletions(-) > > > > Index: linux/include/linux/etherdevice.h > > =================================================================== > > --- linux.orig/include/linux/etherdevice.h > > +++ linux/include/linux/etherdevice.h > > @@ -91,9 +91,9 @@ static inline int is_broadcast_ether_add > > */ > > static inline int is_valid_ether_addr(const u8 *addr) > > { > > - /* FF:FF:FF:FF:FF:FF is a multicast address so we don't need to > > - * explicitly check for it here. */ > > - return !is_multicast_ether_addr(addr) && !is_zero_ether_addr(addr); > > + return !is_broadcast_ether_addr(addr) && > > + !is_multicast_ether_addr(addr) && > > + !is_zero_ether_addr(addr); > > } > > > > why not > return !(addr[0] & 1) && !is_zero_ether_addr(addr); > > -- > Stephen Hemminger <[EMAIL PROTECTED]> > OSDL http://developer.osdl.org/~shemminger > - -- Don Fry [EMAIL PROTECTED] - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html