1eafc8db0SJoe Hershberger /* 2eafc8db0SJoe Hershberger * Copied from LiMon - BOOTP. 3eafc8db0SJoe Hershberger * 4eafc8db0SJoe Hershberger * Copyright 1994, 1995, 2000 Neil Russell. 5eafc8db0SJoe Hershberger * (See License) 6eafc8db0SJoe Hershberger * Copyright 2000 Paolo Scaffardi 7eafc8db0SJoe Hershberger */ 8eafc8db0SJoe Hershberger 9eafc8db0SJoe Hershberger #ifndef __NET_RAND_H__ 10eafc8db0SJoe Hershberger #define __NET_RAND_H__ 11eafc8db0SJoe Hershberger 1299e139d5SMichael Walle #include <common.h> 13eafc8db0SJoe Hershberger 14eafc8db0SJoe Hershberger /* 1599e139d5SMichael Walle * Return a seed for the PRNG derived from the eth0 MAC address. 16eafc8db0SJoe Hershberger */ seed_mac(void)1799e139d5SMichael Wallestatic inline unsigned int seed_mac(void) 1899e139d5SMichael Walle { 19*b044cc1dSJimmy Du unsigned char enetaddr[ARP_HLEN]; 2099e139d5SMichael Walle unsigned int seed; 2199e139d5SMichael Walle 2299e139d5SMichael Walle /* get our mac */ 23*b044cc1dSJimmy Du memcpy(enetaddr, eth_get_ethaddr(), ARP_HLEN); 2499e139d5SMichael Walle 2599e139d5SMichael Walle seed = enetaddr[5]; 2699e139d5SMichael Walle seed ^= enetaddr[4] << 8; 2799e139d5SMichael Walle seed ^= enetaddr[3] << 16; 2899e139d5SMichael Walle seed ^= enetaddr[2] << 24; 2999e139d5SMichael Walle seed ^= enetaddr[1]; 3099e139d5SMichael Walle seed ^= enetaddr[0] << 8; 3199e139d5SMichael Walle 3299e139d5SMichael Walle return seed; 3399e139d5SMichael Walle } 34eafc8db0SJoe Hershberger 35eafc8db0SJoe Hershberger /* 3699e139d5SMichael Walle * Seed the random number generator using the eth0 MAC address. 37eafc8db0SJoe Hershberger */ srand_mac(void)3899e139d5SMichael Wallestatic inline void srand_mac(void) 3999e139d5SMichael Walle { 4099e139d5SMichael Walle srand(seed_mac()); 4199e139d5SMichael Walle } 42eafc8db0SJoe Hershberger 43eafc8db0SJoe Hershberger #endif /* __NET_RAND_H__ */ 44