Subject: Re: What makes a good fake MAC address?

From: Eric Dumazet <[email-masked]>
Date: Wed, 22 Apr 2009 23:13:53 +0200

Inaky Perez-Gonzalez a écrit :
> Hi All
> 
> The Intel i2400m WiMAX driver behaves as an ethernet device, and currently 
> when sending packets to the netdev stack, it fakes an ethernet header, sets 
> the "from" mac address to zeroes and the "to" to it's own MAC address.
> 
> The WiMAX network can be considered to be a point-to-point (up to the gateway) 
> connection, all IP based, so there are not MAC addresses from our gateway 
> (not to mention that it can change behind us).
> 
> The problem with using a zero mac address is that it confuses the bridging 
> software (and maybe others). I was wondering, what would be a fake mac 
> address we could put in there that is legal for this kind of "faking"? [or 
> the closest thing to legal?]
> 
> Thanks!
> 

We have random_ether_addr(), it should be self explained :)

/**
 * random_ether_addr - Generate software assigned random Ethernet address
 * @addr: Pointer to a six-byte array containing the Ethernet address
 *
 * Generate a random Ethernet address (MAC) that is not multicast
 * and has the local assigned bit set.
 */
static inline void random_ether_addr(u8 *addr)
{
        get_random_bytes (addr, ETH_ALEN);
        addr [0] &= 0xfe;       /* clear multicast bit */
        addr [0] |= 0x02;       /* set local assignment bit (IEEE802) */
}