summaryrefslogtreecommitdiffstats
path: root/usr.sbin/rtadvd
diff options
context:
space:
mode:
authorume <ume@FreeBSD.org>2003-08-15 17:51:51 +0000
committerume <ume@FreeBSD.org>2003-08-15 17:51:51 +0000
commit2de9e4015b59f75aaa910be7b3cb2cddd264e3bf (patch)
treeaa22773b0a9dd4c4a79ad5eaabdde1ed27aa6f37 /usr.sbin/rtadvd
parent8a6097d8ded3778d27601a2f7908e2811d60baea (diff)
downloadFreeBSD-src-2de9e4015b59f75aaa910be7b3cb2cddd264e3bf.zip
FreeBSD-src-2de9e4015b59f75aaa910be7b3cb2cddd264e3bf.tar.gz
use arc4random.
Obtained from: KAME MFC after: 1 week
Diffstat (limited to 'usr.sbin/rtadvd')
-rw-r--r--usr.sbin/rtadvd/Makefile2
-rw-r--r--usr.sbin/rtadvd/rtadvd.c6
2 files changed, 7 insertions, 1 deletions
diff --git a/usr.sbin/rtadvd/Makefile b/usr.sbin/rtadvd/Makefile
index 179ba4e..561883e 100644
--- a/usr.sbin/rtadvd/Makefile
+++ b/usr.sbin/rtadvd/Makefile
@@ -18,7 +18,7 @@ PROG= rtadvd
MAN= rtadvd.conf.5 rtadvd.8
SRCS= rtadvd.c rrenum.c advcap.c if.c config.c timer.c dump.c
-CFLAGS+= -DINET6 -DHAVE_POLL_H
+CFLAGS+= -DINET6 -DHAVE_ARC4RANDOM -DHAVE_POLL_H
DPADD= ${LIBCOMPAT}
LDADD= -lcompat
diff --git a/usr.sbin/rtadvd/rtadvd.c b/usr.sbin/rtadvd/rtadvd.c
index e0811ca..f33a951 100644
--- a/usr.sbin/rtadvd/rtadvd.c
+++ b/usr.sbin/rtadvd/rtadvd.c
@@ -214,12 +214,14 @@ main(argc, argv)
/* timer initialization */
rtadvd_timer_init();
+#ifndef HAVE_ARC4RANDOM
/* random value initialization */
#ifdef __FreeBSD__
srandomdev();
#else
srandom((u_long)time(NULL));
#endif
+#endif
/* get iflist block from kernel */
init_iflist();
@@ -1634,7 +1636,11 @@ ra_timer_update(void *data, struct timeval *tm)
* MaxRtrAdvInterval (RFC2461 6.2.4).
*/
interval = rai->mininterval;
+#ifdef HAVE_ARC4RANDOM
+ interval += arc4random() % (rai->maxinterval - rai->mininterval);
+#else
interval += random() % (rai->maxinterval - rai->mininterval);
+#endif
/*
* For the first few advertisements (up to
OpenPOWER on IntegriCloud