net_rand.h 762 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11
/*
 *	Copied from LiMon - BOOTP.
 *
 *	Copyright 1994, 1995, 2000 Neil Russell.
 *	(See License)
 *	Copyright 2000 Paolo Scaffardi
 */

#ifndef __NET_RAND_H__
#define __NET_RAND_H__

12
#include <common.h>
13 14

/*
15
 * Return a seed for the PRNG derived from the eth0 MAC address.
16
 */
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
static inline unsigned int seed_mac(void)
{
	unsigned char enetaddr[6];
	unsigned int seed;

	/* get our mac */
	eth_getenv_enetaddr("ethaddr", enetaddr);

	seed = enetaddr[5];
	seed ^= enetaddr[4] << 8;
	seed ^= enetaddr[3] << 16;
	seed ^= enetaddr[2] << 24;
	seed ^= enetaddr[1];
	seed ^= enetaddr[0] << 8;

	return seed;
}
34 35

/*
36
 * Seed the random number generator using the eth0 MAC address.
37
 */
38 39 40 41
static inline void srand_mac(void)
{
	srand(seed_mac());
}
42 43

#endif /* __NET_RAND_H__ */