summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorume <ume@FreeBSD.org>2003-10-31 16:06:05 +0000
committerume <ume@FreeBSD.org>2003-10-31 16:06:05 +0000
commit2f50cbb708332f469b4898f9f92ba17e95dcf200 (patch)
tree9fab0c15e434400bde480ac16800b9c5b2d6154d
parentae762ca5fedee2ad32e940c570d7552fb54f7dbe (diff)
downloadFreeBSD-src-2f50cbb708332f469b4898f9f92ba17e95dcf200.zip
FreeBSD-src-2f50cbb708332f469b4898f9f92ba17e95dcf200.tar.gz
use arc4random.
Obtained from: KAME
-rw-r--r--sys/netinet6/in6_ifattach.c7
-rw-r--r--sys/netinet6/mld6_var.h2
-rw-r--r--sys/netinet6/nd6.h2
-rw-r--r--sys/netinet6/nd6_nbr.c4
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);
}
OpenPOWER on IntegriCloud