diff options
| author | Michael Walle <michael@walle.cc> | 2012-06-05 11:33:15 +0000 | 
|---|---|---|
| committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2012-07-07 14:07:32 +0200 | 
| commit | 99e139d5902e488eb779cd4f00c978f3803c39be (patch) | |
| tree | 44a0e2420003a2c3393b845b091bcc7b2e05a93b /net/net_rand.c | |
| parent | 9acf1ca50d8b031511d146f6ffd73201fedce28c (diff) | |
| download | olio-uboot-2014.01-99e139d5902e488eb779cd4f00c978f3803c39be.tar.xz olio-uboot-2014.01-99e139d5902e488eb779cd4f00c978f3803c39be.zip | |
net: use common rand()/srand() functions
Replace rand() with the functions from lib/. The link-local network code
stores its own seed, derived from the MAC address. Thus making it
independent from calls to srand() in other modules.
Signed-off-by: Michael Walle <michael@walle.cc>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'net/net_rand.c')
| -rw-r--r-- | net/net_rand.c | 68 | 
1 files changed, 0 insertions, 68 deletions
| diff --git a/net/net_rand.c b/net/net_rand.c deleted file mode 100644 index 5387abadc..000000000 --- a/net/net_rand.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - *	Based on LiMon - BOOTP. - * - *	Copyright 1994, 1995, 2000 Neil Russell. - *	(See License) - *	Copyright 2000 Roland Borde - *	Copyright 2000 Paolo Scaffardi - *	Copyright 2000-2004 Wolfgang Denk, wd@denx.de - */ - -#include <common.h> -#include <net.h> -#include "net_rand.h" - -static ulong seed1, seed2; - -void srand_mac(void) -{ -	ulong tst1, tst2, m_mask; -	ulong m_value = 0; -	int reg; -	unsigned char bi_enetaddr[6]; - -	/* get our mac */ -	eth_getenv_enetaddr("ethaddr", bi_enetaddr); - -	debug("BootpRequest => Our Mac: "); -	for (reg = 0; reg < 6; reg++) -		debug("%x%c", bi_enetaddr[reg], reg == 5 ? '\n' : ':'); - -	/* Mac-Manipulation 2 get seed1 */ -	tst1 = 0; -	tst2 = 0; -	for (reg = 2; reg < 6; reg++) { -		tst1 = tst1 << 8; -		tst1 = tst1 | bi_enetaddr[reg]; -	} -	for (reg = 0; reg < 2; reg++) { -		tst2 = tst2 | bi_enetaddr[reg]; -		tst2 = tst2 << 8; -	} - -	seed1 = tst1^tst2; - -	/* Mirror seed1*/ -	m_mask = 0x1; -	for (reg = 1; reg <= 32; reg++) { -		m_value |= (m_mask & seed1); -		seed1 = seed1 >> 1; -		m_value = m_value << 1; -	} -	seed1 = m_value; -	seed2 = 0xb78d0945; -} - -unsigned long rand(void) -{ -	ulong sum; - -	/* Random Number Generator */ -	sum = seed1 + seed2; -	if (sum < seed1 || sum < seed2) -		sum++; -	seed2 = seed1; -	seed1 = sum; - -	return sum; -} |