const void **ll_dest, const void **ll_source,
uint16_t *net_proto, unsigned int *flags );
extern void eth_init_addr ( const void *hw_addr, void *ll_addr );
+extern void eth_random_addr ( void *hw_addr );
extern const char * eth_ntoa ( const void *ll_addr );
extern int eth_mc_hash ( unsigned int af, const void *net_addr,
void *ll_addr );
FILE_LICENCE ( GPL2_OR_LATER );
#include <stdint.h>
+#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <byteswap.h>
memcpy ( ll_addr, hw_addr, ETH_ALEN );
}
+/**
+ * Generate random Ethernet address
+ *
+ * @v hw_addr Generated hardware address
+ */
+void eth_random_addr ( void *hw_addr ) {
+ uint8_t *addr = hw_addr;
+ unsigned int i;
+
+ for ( i = 0 ; i < ETH_ALEN ; i++ )
+ addr[i] = random();
+ addr[0] &= ~0x01; /* Clear multicast bit */
+ addr[0] |= 0x02; /* Set locally-assigned bit */
+}
+
/**
* Transcribe Ethernet address
*