From 56160b2e676373344fc2f4edb9e7b4869cf74b7d Mon Sep 17 00:00:00 2001
From: Xin LI <delphij@FreeBSD.org>
Date: Tue, 6 Oct 2015 23:42:58 +0000
Subject: [PATCH] Now that we own the code, use arc4random(3) unconditionally
 and remove the corresponding HAVE_ARC4RANDOM conditions.

MFC after:	2 weeks
---
 sbin/rtsol/Makefile      |  2 +-
 usr.sbin/rtadvd/Makefile |  2 --
 usr.sbin/rtadvd/rtadvd.c | 17 -----------------
 usr.sbin/rtsold/Makefile |  1 -
 usr.sbin/rtsold/rtsold.c |  8 --------
 5 files changed, 1 insertion(+), 29 deletions(-)

diff --git a/sbin/rtsol/Makefile b/sbin/rtsol/Makefile
index a2bd040329c4..8356ea465c5e 100644
--- a/sbin/rtsol/Makefile
+++ b/sbin/rtsol/Makefile
@@ -21,6 +21,6 @@ SRCS=	rtsold.c rtsol.c if.c probe.c dump.c rtsock.c
 MAN=
 
 WARNS?=	3
-CFLAGS+= -DHAVE_ARC4RANDOM -DSMALL
+CFLAGS+= -DSMALL
 
 .include <bsd.prog.mk>
diff --git a/usr.sbin/rtadvd/Makefile b/usr.sbin/rtadvd/Makefile
index 33e90b64c422..5d627e55b265 100644
--- a/usr.sbin/rtadvd/Makefile
+++ b/usr.sbin/rtadvd/Makefile
@@ -21,8 +21,6 @@ SRCS=	rtadvd.c rrenum.c advcap.c if.c config.c timer.c timer_subr.c	\
 
 LIBADD=	util
 
-CFLAGS+= -DHAVE_ARC4RANDOM
-
 WARNS?=	1
 
 .include <bsd.prog.mk>
diff --git a/usr.sbin/rtadvd/rtadvd.c b/usr.sbin/rtadvd/rtadvd.c
index 0169a5657a1b..76948116b782 100644
--- a/usr.sbin/rtadvd/rtadvd.c
+++ b/usr.sbin/rtadvd/rtadvd.c
@@ -241,14 +241,6 @@ main(int argc, char *argv[])
 	/* timer initialization */
 	rtadvd_timer_init();
 
-#ifndef HAVE_ARC4RANDOM
-	/* random value initialization */
-#ifdef __FreeBSD__
-	srandomdev();
-#else
-	srandom((unsigned long)time(NULL));
-#endif
-#endif
 	pfh = pidfile_open(pidfilename, 0600, &otherpid);
 	if (pfh == NULL) {
 		if (errno == EEXIST)
@@ -1015,11 +1007,7 @@ set_short_delay(struct ifinfo *ifi)
 	 * delay and send the advertisement at the
 	 * already-scheduled time. RFC 4861 6.2.6
 	 */
-#ifdef HAVE_ARC4RANDOM
 	delay = arc4random_uniform(MAX_RA_DELAY_TIME);
-#else
-	delay = random() % MAX_RA_DELAY_TIME;
-#endif
 	interval.tv_sec = 0;
 	interval.tv_nsec = delay * 1000;
 	rest = rtadvd_timer_rest(ifi->ifi_ra_timer);
@@ -1893,13 +1881,8 @@ ra_timer_update(void *arg, struct timespec *tm)
 		 * MaxRtrAdvInterval (RFC4861 6.2.4).
 		 */
 		interval = rai->rai_mininterval;
-#ifdef HAVE_ARC4RANDOM
 		interval += arc4random_uniform(rai->rai_maxinterval -
 		    rai->rai_mininterval);
-#else
-		interval += random() % (rai->rai_maxinterval -
-		    rai->rai_mininterval);
-#endif
 		break;
 	case IFI_STATE_TRANSITIVE:
 		/*
diff --git a/usr.sbin/rtsold/Makefile b/usr.sbin/rtsold/Makefile
index caef62c78d87..84cf0b2500d4 100644
--- a/usr.sbin/rtsold/Makefile
+++ b/usr.sbin/rtsold/Makefile
@@ -20,6 +20,5 @@ MLINKS=	rtsold.8 rtsol.8
 SRCS=	rtsold.c rtsol.c if.c probe.c dump.c rtsock.c
 
 WARNS?=	3
-CFLAGS+= -DHAVE_ARC4RANDOM
 
 .include <bsd.prog.mk>
diff --git a/usr.sbin/rtsold/rtsold.c b/usr.sbin/rtsold/rtsold.c
index 18621bdfdcf1..85ee133e9b6c 100644
--- a/usr.sbin/rtsold/rtsold.c
+++ b/usr.sbin/rtsold/rtsold.c
@@ -214,10 +214,6 @@ main(int argc, char **argv)
 		errx(1, "pid filename (%s) must be an absolute path",
 		    pidfilename);
 	}
-#ifndef HAVE_ARC4RANDOM
-	/* random value initialization */
-	srandom((u_long)time(NULL));
-#endif
 
 #if (__FreeBSD_version < 900000)
 	if (Fflag) {
@@ -725,11 +721,7 @@ rtsol_timer_update(struct ifinfo *ifi)
 			ifi->timer = tm_max;	/* stop timer(valid?) */
 		break;
 	case IFS_DELAY:
-#ifndef HAVE_ARC4RANDOM
-		interval = random() % (MAX_RTR_SOLICITATION_DELAY * MILLION);
-#else
 		interval = arc4random_uniform(MAX_RTR_SOLICITATION_DELAY * MILLION);
-#endif
 		ifi->timer.tv_sec = interval / MILLION;
 		ifi->timer.tv_nsec = (interval % MILLION) * 1000;
 		break;