198184Sgordon#!/bin/sh
298184Sgordon#
398184Sgordon# $FreeBSD$
498184Sgordon#
598184Sgordon
698184Sgordon# PROVIDE: initrandom
7208307Sdougb# REQUIRE: dumpon ddb
898184Sgordon# BEFORE: disks
9136224Smtm# KEYWORD: nojail
1098184Sgordon
1198184Sgordon. /etc/rc.subr
1298184Sgordon
1398184Sgordonname="initrandom"
1498184Sgordonstart_cmd="initrandom_start"
1598184Sgordonstop_cmd=":"
1698184Sgordon
1798184Sgordoninitrandom_start()
1898184Sgordon{
19128060Smarkm	soft_random_generator=`sysctl kern.random 2>/dev/null`
20128060Smarkm
2198184Sgordon	echo -n 'Entropy harvesting:'
2298184Sgordon
23128060Smarkm	if [ \! -z "${soft_random_generator}" ] ; then
24128060Smarkm
25178423Sru		if [ -w /dev/random ]; then
26178423Sru			if checkyesno harvest_interrupt; then
27220153Semaste				${SYSCTL} kern.random.sys.harvest.interrupt=1 >/dev/null
28128060Smarkm				echo -n ' interrupts'
29178423Sru			else
30220153Semaste				${SYSCTL} kern.random.sys.harvest.interrupt=0 >/dev/null
31128060Smarkm			fi
3298184Sgordon
33178423Sru			if checkyesno harvest_ethernet; then
34220153Semaste				${SYSCTL} kern.random.sys.harvest.ethernet=1 >/dev/null
35128060Smarkm				echo -n ' ethernet'
36178423Sru			else
37220153Semaste				${SYSCTL} kern.random.sys.harvest.ethernet=0 >/dev/null
38128060Smarkm			fi
3998184Sgordon
40178423Sru			if checkyesno harvest_p_to_p; then
41220153Semaste				${SYSCTL} kern.random.sys.harvest.point_to_point=1 >/dev/null
42128060Smarkm				echo -n ' point_to_point'
43178423Sru			else
44220153Semaste				${SYSCTL} kern.random.sys.harvest.point_to_point=0 >/dev/null
45128060Smarkm			fi
46128060Smarkm
47256381Smarkm			if checkyesno harvest_swi; then
48256381Smarkm				${SYSCTL} kern.random.sys.harvest.swi=1 >/dev/null
49256381Smarkm				echo -n ' swi'
50256381Smarkm			else
51256381Smarkm				${SYSCTL} kern.random.sys.harvest.swi=0 >/dev/null
52128060Smarkm			fi
53256381Smarkm		fi
54128060Smarkm
5598184Sgordon	fi
5698184Sgordon
5798184Sgordon	echo '.'
5898184Sgordon}
5998184Sgordon
6098184Sgordonload_rc_config random
6198184Sgordonrun_rc_command "$1"
62