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

Reply via email to