1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2007 OpenWrt.org
4 # Preferably start dnscache after udhcpd/dnsmasq, to be sure /etc/resolv.conf is set correctly. dnsmasq is at S60, so dnscache is put at S65 as seen below. If /etc/resolv.conf is not used, then dnscache may be started at S47, just after the firewall has been set up.
6 PATH
=/usr
/local
/sbin
:/usr
/local
/bin
:/sbin
:/bin
:/usr
/sbin
:/usr
/bin
7 DAEMON
=/usr
/bin
/dnscache
9 DESC
="Caching name server"
12 resolvfile
="/etc/resolv.conf"
15 echo "Starting $DESC: $NAME"
17 config_foreach get_userids global
19 cp -fa /etc
/dnscache
/* $ROOT
22 chown
-R $UID:$GID $ROOT
23 config_foreach start_dnscache dnscache
28 config_get UID
"$cfg" runasuser
29 config_get GID
"$cfg" runasgroup
35 echo $1 >> $ROOT/resolvers
39 echo $1 >> $ROOT/ignoreip
44 config_get logging
"$cfg" logging
45 config_get useresolvconf
"$cfg" useresolvconf
46 config_get iface
"$cfg" interface
47 config_get ifacesend
"$cfg" interfacesend
48 config_get defaultallowif
"$cfg" defaultallowif
49 config_get CACHESIZE
"$cfg" cachesize
50 config_get FORWARDONLY
"$cfg" forwardonly
51 config_get HIDETTL
"$cfg" hidettl
52 config_list_foreach
"$cfg" "resolver" append_server
53 config_get useignore
"$cfg" useignore
54 if [ "$useignore" == "1" ] ; then
55 config_list_foreach
"$cfg" "ignoreip" append_ignore
57 # Add some interface network addresses to list of allowed IP addresses (assumes /24 networks)
60 if [ -n "$defaultallowif" ] ; then
61 for myinterface
in `echo $defaultallowif`; do
62 config_get addr
$myinterface ipaddr
63 # the next line strips the last octet from the ip address
64 addr
=`echo $addr|sed 's/.[0-9]\+$//'`
66 echo Adding
$ROOT/ip
/$addr
69 # Translate listen interface names to IP addresses
70 config_get IP
"$iface" ipaddr
71 # Translante send interface name to an IP address
72 config_get IPSEND
"$ifacesend" ipaddr
73 # Unset HIDETTL if equal to 0
74 if [ "$HIDETTL" == "0" ] ; then
77 # If forwardingonly set then activate list of resolvers
78 if [ "$FORWARDONLY" == "0" ] ; then
79 # Unset FORWARDONLY if equal to '0'
82 # Use either fixed list of dnsservers or resolv.conf data
83 if [ "$useresolvconf" == "1" ] ; then
84 if [ -s "$resolvfile" ] ; then
85 cat $resolvfile|
grep nameserver|
sed 's/nameserver //g' > $ROOT/resolvers
87 echo Error
: $resolvfile does not exist.
91 if [ ! "`cat $ROOT/resolvers|wc -L`" == "0" ] ; then
92 cp -f $ROOT/resolvers
$ROOT/servers
/@
> /dev
/null
2>&1
94 echo Error
: No resolvers are defined.
100 # dnscache likes to receive a 128 byte random seed
101 dd if=/dev
/urandom of
=$ROOT/randomseed bs
=128 count
=1 > /dev
/null
2>&1
102 if [ "$DEBUG" == 1 ] ; then
103 $DAEMON < /$ROOT/randomseed
104 elif [ "$logging" == '1' ] ; then
105 $DAEMON 2>&1 < /$ROOT/randomseed | logger
-p local1.info
-t $NAME &
107 $DAEMON > /dev
/null
2>&1 < /$ROOT/randomseed
&
112 echo -n "Stopping $DESC: $NAME"
113 kill `pidof $NAME|sed "s/$$//g"` > /dev
/null
2>&1
118 echo "Restarting $DESC: $NAME... "