Bring RCNG in from 5.x and adjust config files and scripts accordingly.
[dragonfly.git] / etc / rc.d / initrandom
1 #!/bin/sh
2 #
3 # $FreeBSD: src/etc/rc.d/initrandom,v 1.1 2002/06/13 22:14:36 gordon Exp $
4 # $DragonFly: src/etc/rc.d/initrandom,v 1.1 2003/07/24 06:35:37 dillon Exp $
5 #
6
7 # PROVIDE: initrandom
8 # REQUIRE: initdiskless
9 # BEFORE: disks
10 # KEYWORD: DragonFly FreeBSD
11
12 . /etc/rc.subr
13
14 name="initrandom"
15 start_cmd="initrandom_start"
16 stop_cmd=":"
17
18 feed_dev_random()
19 {
20         if [ -f "${1}" -a -r "${1}" -a -s "${1}" ]; then
21                 cat "${1}" | dd of=/dev/random bs=8k 2>/dev/null
22         fi
23 }
24
25 initrandom_start()
26 {
27         echo -n 'Entropy harvesting:'
28
29         if checkyesno harvest_interrupt; then
30                 if [ -w /dev/random ]; then
31                         ${SYSCTL_W} kern.random.sys.harvest.interrupt=1 >/dev/null
32                         echo -n ' interrupts'
33                 fi
34         fi
35
36         if checkyesno harvest_ethernet; then
37                 if [ -w /dev/random ]; then
38                         ${SYSCTL_W} kern.random.sys.harvest.ethernet=1 >/dev/null
39                         echo -n ' ethernet'
40                 fi
41         fi
42
43         if checkyesno harvest_p_to_p; then
44                 if [ -w /dev/random ]; then
45                 ${SYSCTL_W} kern.random.sys.harvest.point_to_point=1 >/dev/null
46                         echo -n ' point_to_point'
47                 fi
48         fi
49
50         echo '.'
51
52         # First pass at reseeding /dev/random.
53         #
54         case ${entropy_file} in
55         [Nn][Oo] | '')
56                 ;;
57         *)
58                 if [ -w /dev/random ]; then
59                         feed_dev_random "${entropy_file}"
60                 fi
61                 ;;
62         esac
63
64         # XXX temporary until we can get the entropy
65         # harvesting rate up
66         # Entropy below is not great,
67         # but better than nothing.
68         ( ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww; ) \
69             | dd of=/dev/random bs=8k 2>/dev/null
70         cat /bin/ls | dd of=/dev/random bs=8k 2>/dev/null
71 }
72
73 load_rc_config random
74 run_rc_command "$1"