1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copied from LiMon - BOOTP. 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright 1994, 1995, 2000 Neil Russell. 5*4882a593Smuzhiyun * (See License) 6*4882a593Smuzhiyun * Copyright 2000 Paolo Scaffardi 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef __NET_RAND_H__ 10*4882a593Smuzhiyun #define __NET_RAND_H__ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #include <common.h> 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun /* 15*4882a593Smuzhiyun * Return a seed for the PRNG derived from the eth0 MAC address. 16*4882a593Smuzhiyun */ seed_mac(void)17*4882a593Smuzhiyunstatic inline unsigned int seed_mac(void) 18*4882a593Smuzhiyun { 19*4882a593Smuzhiyun unsigned char enetaddr[ARP_HLEN]; 20*4882a593Smuzhiyun unsigned int seed; 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun /* get our mac */ 23*4882a593Smuzhiyun memcpy(enetaddr, eth_get_ethaddr(), ARP_HLEN); 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun seed = enetaddr[5]; 26*4882a593Smuzhiyun seed ^= enetaddr[4] << 8; 27*4882a593Smuzhiyun seed ^= enetaddr[3] << 16; 28*4882a593Smuzhiyun seed ^= enetaddr[2] << 24; 29*4882a593Smuzhiyun seed ^= enetaddr[1]; 30*4882a593Smuzhiyun seed ^= enetaddr[0] << 8; 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun return seed; 33*4882a593Smuzhiyun } 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun /* 36*4882a593Smuzhiyun * Seed the random number generator using the eth0 MAC address. 37*4882a593Smuzhiyun */ srand_mac(void)38*4882a593Smuzhiyunstatic inline void srand_mac(void) 39*4882a593Smuzhiyun { 40*4882a593Smuzhiyun srand(seed_mac()); 41*4882a593Smuzhiyun } 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun #endif /* __NET_RAND_H__ */ 44