diff options
author | ume <ume@FreeBSD.org> | 2003-10-31 16:06:05 +0000 |
---|---|---|
committer | ume <ume@FreeBSD.org> | 2003-10-31 16:06:05 +0000 |
commit | 2f50cbb708332f469b4898f9f92ba17e95dcf200 (patch) | |
tree | 9fab0c15e434400bde480ac16800b9c5b2d6154d | |
parent | ae762ca5fedee2ad32e940c570d7552fb54f7dbe (diff) | |
download | FreeBSD-src-2f50cbb708332f469b4898f9f92ba17e95dcf200.zip FreeBSD-src-2f50cbb708332f469b4898f9f92ba17e95dcf200.tar.gz |
use arc4random.
Obtained from: KAME
-rw-r--r-- | sys/netinet6/in6_ifattach.c | 7 | ||||
-rw-r--r-- | sys/netinet6/mld6_var.h | 2 | ||||
-rw-r--r-- | sys/netinet6/nd6.h | 2 | ||||
-rw-r--r-- | sys/netinet6/nd6_nbr.c | 4 |
4 files changed, 6 insertions, 9 deletions
diff --git a/sys/netinet6/in6_ifattach.c b/sys/netinet6/in6_ifattach.c index 13494f6..ea0db8b 100644 --- a/sys/netinet6/in6_ifattach.c +++ b/sys/netinet6/in6_ifattach.c @@ -140,7 +140,6 @@ generate_tmp_ifid(seed0, seed1, ret) MD5_CTX ctxt; u_int8_t seed[16], digest[16], nullbuf[8]; u_int32_t val32; - struct timeval tv; /* If there's no hisotry, start with a random seed. */ bzero(nullbuf, sizeof(nullbuf)); @@ -148,8 +147,7 @@ generate_tmp_ifid(seed0, seed1, ret) int i; for (i = 0; i < 2; i++) { - microtime(&tv); - val32 = random() ^ tv.tv_usec; + val32 = arc4random(); bcopy(&val32, seed + sizeof(val32) * i, sizeof(val32)); } } else @@ -191,8 +189,7 @@ generate_tmp_ifid(seed0, seed1, ret) log(LOG_INFO, "generate_tmp_ifid: computed MD5 value is zero.\n"); - microtime(&tv); - val32 = random() ^ tv.tv_usec; + val32 = arc4random(); val32 = 1 + (val32 % (0xffffffff - 1)); } diff --git a/sys/netinet6/mld6_var.h b/sys/netinet6/mld6_var.h index 405f45a..13ae1e6 100644 --- a/sys/netinet6/mld6_var.h +++ b/sys/netinet6/mld6_var.h @@ -35,7 +35,7 @@ #ifdef _KERNEL -#define MLD6_RANDOM_DELAY(X) (random() % (X) + 1) +#define MLD6_RANDOM_DELAY(X) (arc4random() % (X) + 1) /* * States for MLD stop-listening processing diff --git a/sys/netinet6/nd6.h b/sys/netinet6/nd6.h index 28193b1..fc6e65a 100644 --- a/sys/netinet6/nd6.h +++ b/sys/netinet6/nd6.h @@ -228,7 +228,7 @@ struct in6_ndifreq { #define TEMPADDR_REGEN_ADVANCE 5 /* sec */ #define MAX_TEMP_DESYNC_FACTOR 600 /* 10 min */ #define ND_COMPUTE_RTIME(x) \ - (((MIN_RANDOM_FACTOR * (x >> 10)) + (random() & \ + (((MIN_RANDOM_FACTOR * (x >> 10)) + (arc4random() & \ ((MAX_RANDOM_FACTOR - MIN_RANDOM_FACTOR) * (x >> 10)))) /1000) TAILQ_HEAD(nd_drhead, nd_defrouter); diff --git a/sys/netinet6/nd6_nbr.c b/sys/netinet6/nd6_nbr.c index 0ed8311..8a26928 100644 --- a/sys/netinet6/nd6_nbr.c +++ b/sys/netinet6/nd6_nbr.c @@ -1086,9 +1086,9 @@ nd6_dad_start(ifa, tick) int ntick; if (*tick == 0) - ntick = random() % (MAX_RTR_SOLICITATION_DELAY * hz); + ntick = arc4random() % (MAX_RTR_SOLICITATION_DELAY * hz); else - ntick = *tick + random() % (hz / 2); + ntick = *tick + arc4random() % (hz / 2); *tick = ntick; nd6_dad_starttimer(dp, ntick); } |