net_rand.h 774 B

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