Changeset 191

Show
Ignore:
Timestamp:
07/12/06 00:40:18 (2 years ago)
Author:
tg
Message:

* change the SYSV init system to add a target "autostart"
* on system startup, call autostart instead of start
* on autostart, check /etc/rc.conf for whether the service is

enabled and act appropriately; fall through into start target

* move some pre-startup checks into the start target
* some whitespace cleanup, when it makes much sense

(XXX when I get the person who wrote these scripts...)

* optimise dropbear a little

ok and approved wbx@

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/freewrt/package/aiccu/files/aiccu.init

    r1 r191  
    22 
    33case "$1" in 
    4     start) 
     4autostart|start) 
    55        aiccu start      
    66        ;; 
    77 
    8     stop) 
     8stop) 
    99        aiccu stop 
    1010        aiccu stop 
    1111        ;; 
    1212 
    13     restart) 
     13restart) 
    1414        $0 stop 
    1515        $0 start 
    1616        ;; 
    17     *) 
     17*) 
    1818        echo "Usage: $0 {start|stop|restart}" 
    1919        exit 1 
  • trunk/freewrt/package/asterisk/files/asterisk.init

    r1 r191  
    77 
    88case $1 in 
    9  start) 
     9autostart|start) 
    1010  [ -d /var/run ] || mkdir -p /var/run 
    1111  [ -d /var/log/asterisk ] || mkdir -p /var/log/asterisk 
  • trunk/freewrt/package/avahi/files/avahi-daemon.init

    r1 r191  
    88 
    99case $1 in 
    10  start) 
     10autostart|start) 
    1111  mkdir -p $RUN_D 
    1212  $BIN $OPTIONS 
  • trunk/freewrt/package/base-files/default/etc/init.d/S40network

    r181 r191  
    11#!/bin/sh 
    2 case "$1" in 
    3   start|restart) 
    4   ifup_interfaces=$(nvram get ifup_interfaces) 
    5   ifup_interfaces=${ifup_interfaces:-"lan wan wifi"} 
    6   for iface in $ifup_interfaces; do 
    7         ifup $iface 
    8         if [ "$iface" = "wifi" ]; then 
    9                 $iface up 
    10         fi 
    11   done 
    12   ;; 
     2case $1 in 
     3autostart|start|restart) 
     4        ifup_interfaces=$(nvram get ifup_interfaces) 
     5        ifup_interfaces=${ifup_interfaces:-"lan wan wifi"} 
     6        for iface in $ifup_interfaces; do 
     7                ifup $iface 
     8                [ "$iface" = "wifi" ] && $iface up 
     9        done 
     10        ;; 
    1311esac 
    1412exit 0 
  • trunk/freewrt/package/base-files/default/etc/init.d/S60cron

    r36 r191  
    11#!/bin/sh 
    22case $1 in 
    3 start) 
     3autostart|start) 
    44        mkdir -p /var/spool/cron 
    55        ln -s /etc/crontabs /var/spool/cron/crontabs 
  • trunk/freewrt/package/base-files/default/etc/init.d/rcS

    r182 r191  
    66 
    77for i in /etc/init.d/S*; do 
    8   $i start 2>&1 
     8       $i autostart 2>&1 
    99done | logger -s -p 6 -t '' & 
  • trunk/freewrt/package/chillispot/files/chillispot.init

    r1 r191  
    55 
    66case $1 in 
    7  start) 
     7autostart|start) 
    88  /sbin/insmod tun >/dev/null 2>&1 
    99  [ -d $RUN_D ] || mkdir -p $RUN_D 
  • trunk/freewrt/package/dhcp-forwarder/files/dhcp-fwd.init

    r1 r191  
    66 
    77case $1 in 
    8  start) 
     8autostart|start) 
    99  [ -d $LOG_D ] || mkdir -p $LOG_D 
    1010  [ -d $RUN_D ] || mkdir -p $RUN_D 
  • trunk/freewrt/package/dnsmasq/files/dnsmasq.init

    r181 r191  
    33. /etc/rc.conf 
    44 
    5 if [ X"${dns_dhcp}" == X"NO" ]; then 
    6         exit 0 
    7 fi 
    8  
    9 [ -f /etc/dnsmasq.conf ] || exit 
    10  
    115case $1 in 
     6        autostart) 
     7                test x"$dns_dhcp" = x"NO" && exit 0 
     8                # FALLTHROUGH 
    129        start) 
     10                [ -f /etc/dnsmasq.conf ] || exit 
    1311                /usr/sbin/dnsmasq 
    1412                ;; 
  • trunk/freewrt/package/dropbear/files/dropbear.init

    r181 r191  
    33. /etc/rc.conf 
    44 
    5 if [ X"${ssh}" == X"NO" ]; then 
    6         exit 0 
    7 fi 
    8  
    9 for type in rsa dss; do { 
    10   # check for keys 
    11   key=/etc/dropbear/dropbear_${type}_host_key 
    12   [ ! -f $key ] && { 
    13     # generate missing keys 
    14     mkdir -p /etc/dropbear 
    15     [ -x /usr/bin/dropbearkey ] && { 
    16       /usr/bin/dropbearkey -t $type -f $key 2>&- >&- && exec $0 $* 
    17     } & 
    18     exit 0 
    19   } 
    20 }; done 
    21  
    225case $1 in 
     6autostart) 
     7        test x"$ssh" = x"NO" && exit 0 
     8        # FALLTHROUGH 
    239start) 
     10        # check for keys 
     11        for type in rsa dss; do 
     12                key=/etc/dropbear/dropbear_${type}_host_key 
     13                [ -f $key ] || { 
     14                        mkdir -p /etc/dropbear 
     15                        [ -x /usr/bin/dropbearkey ] && { 
     16                            /usr/bin/dropbearkey -t $type -f $key 2>&- >&- && \ 
     17                            exec $0 $*; } & 
     18                        exit 0 
     19                } 
     20        done 
    2421        /usr/sbin/dropbear -w 
    2522        ;; 
  • trunk/freewrt/package/ez-ipupdate/files/ez-ipupdate.init

    r1 r191  
    88 
    99case $1 in 
    10  start) 
     10autostart|start) 
    1111  mkdir -p $RUN_D 
    1212  $BIN -c $CONF 
  • trunk/freewrt/package/fakeidentd/files/fakeidentd.init

    r1 r191  
    22NAME=fakeidentd 
    33case "$1" in 
    4   start) 
     4autostart|start) 
    55        [ -e $DEFAULT ] && $NAME $DEFAULT 
    66        ;; 
  • trunk/freewrt/package/freeradius/files/radiusd.init

    r1 r191  
    88 
    99case $1 in 
    10  start) 
     10autostart|start) 
    1111  [ -d $LOG_D ] || mkdir -p $LOG_D 
    1212  [ -d $RUN_D ] || mkdir -p $RUN_D 
  • trunk/freewrt/package/frickin/files/frickin.init

    r1 r191  
    66 
    77case $1 in 
    8  start) 
     8autostart|start) 
    99  $BIN $OPTIONS & 
    1010  ;; 
  • trunk/freewrt/package/gmediaserver/files/gmediaserver.init

    r1 r191  
    88 
    99case $1 in 
    10  start) 
     10autostart|start) 
    1111  $BIN $OPTIONS 
    1212  ;; 
  • trunk/freewrt/package/howl/files/autoipd.init

    r1 r191  
    77 
    88case $1 in 
    9  start) 
     9autostart|start) 
    1010  [ -d $RUN_D ] || mkdir -p $RUN_D 
    1111  autoipd $OPTIONS 
  • trunk/freewrt/package/howl/files/mDNSResponder.init

    r1 r191  
    77 
    88case $1 in 
    9  start) 
     9autostart|start) 
    1010  [ -d $RUN_D ] || mkdir -p $RUN_D 
    1111  mDNSResponder $OPTIONS 
  • trunk/freewrt/package/howl/files/nifd.init

    r1 r191  
    88 
    99case $1 in 
    10  start) 
     10autostart|start) 
    1111  [ -d $RUN_D ] || mkdir -p $RUN_D 
    1212  nifd $OPTIONS 
  • trunk/freewrt/package/htpdate/files/htpdate.init

    r1 r191  
    88 
    99case $1 in 
    10  start) 
     10autostart|start) 
    1111  mkdir -p $RUN_D 
    1212  $BIN -l -s -t $OPTIONS && $BIN -D $OPTIONS 
  • trunk/freewrt/package/iptables/files/firewall.init

    r181 r191  
    22 
    33. /etc/rc.conf 
    4  
    5 if [ X"${firewall}" == X"NO" ]; then 
    6         exit 0 
    7 fi 
    8  
    94. /etc/functions.sh 
    105 
     
    138 
    149case $1 in 
    15         start) 
    16                 iptables -N input_rule 
    17                 iptables -N output_rule 
    18                 iptables -N forwarding_rule 
     10autostart) 
     11        test x"$firewall" = x"NO" && exit 0 
     12        # FALLTHROUGH 
     13start) 
     14        iptables -N input_rule 
     15        iptables -N output_rule 
     16        iptables -N forwarding_rule 
    1917 
    20                iptables -t nat -N prerouting_rule 
    21                iptables -t nat -N postrouting_rule 
     18        iptables -t nat -N prerouting_rule 
     19        iptables -t nat -N postrouting_rule 
    2220 
    23                ### INPUT 
    24                ###  (connections with the router as destination) 
     21        ### INPUT 
     22        ###  (connections with the router as destination) 
    2523 
    26                # base case 
    27                iptables -P INPUT DROP 
    28                iptables -A INPUT -m state --state INVALID -j DROP 
    29                iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
    30                iptables -A INPUT -p tcp --tcp-flags SYN SYN --tcp-option \! 2 -j  DROP 
     24        # base case 
     25        iptables -P INPUT DROP 
     26        iptables -A INPUT -m state --state INVALID -j DROP 
     27        iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
     28        iptables -A INPUT -p tcp --tcp-flags SYN SYN --tcp-option \! 2 -j  DROP 
    3129 
    32                
    33                # insert accept rule or to jump to new accept-check table here 
    34                
    35                iptables -A INPUT -j input_rule 
     30       
     31        # insert accept rule or to jump to new accept-check table here 
     32       
     33        iptables -A INPUT -j input_rule 
    3634 
    37                # allow 
    38                iptables -A INPUT ${WAN:+\! -i $WAN} -j ACCEPT # allow from all interfaces except for wan 
    39                iptables -A INPUT -p icmp      -j ACCEPT       # allow ICMP 
    40                iptables -A INPUT -p gre       -j ACCEPT       # allow GRE 
    41                # allow ssh from remote 
    42                iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT  
    43                iptables        -A input_rule      -i $WAN -p tcp --dport 22 -j ACCEPT 
     35        # allow 
     36        iptables -A INPUT ${WAN:+\! -i $WAN} -j ACCEPT        # allow from all interfaces except for wan 
     37        iptables -A INPUT -p icmp     -j ACCEPT       # allow ICMP 
     38        iptables -A INPUT -p gre      -j ACCEPT       # allow GRE 
     39        # allow ssh from remote 
     40        iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT  
     41        iptables        -A input_rule      -i $WAN -p tcp --dport 22 -j ACCEPT 
    4442 
    45                # reject (what to do with anything not allowed earlier) 
    46                iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset 
    47                iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable 
     43        # reject (what to do with anything not allowed earlier) 
     44        iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset 
     45        iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable 
    4846 
    49                ### OUTPUT 
    50                # (connections with the router as source) 
     47        ### OUTPUT 
     48        # (connections with the router as source) 
    5149 
    52                # base case 
    53                iptables -P OUTPUT DROP 
    54                iptables -A OUTPUT -m state --state INVALID -j DROP 
    55                iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
     50        # base case 
     51        iptables -P OUTPUT DROP 
     52        iptables -A OUTPUT -m state --state INVALID -j DROP 
     53        iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
    5654 
    57                
    58                # insert accept rule or to jump to new accept-check table here 
    59                
    60                iptables -A OUTPUT -j output_rule 
     55       
     56        # insert accept rule or to jump to new accept-check table here 
     57       
     58        iptables -A OUTPUT -j output_rule 
    6159 
    62                # allow 
    63                iptables -A OUTPUT -j ACCEPT           #allow everything out 
     60        # allow 
     61        iptables -A OUTPUT -j ACCEPT          #allow everything out 
    6462 
    65                # reject (what to do with anything not allowed earlier) 
    66                iptables -A OUTPUT -p tcp -j REJECT --reject-with tcp-reset 
    67                iptables -A OUTPUT -j REJECT --reject-with icmp-port-unreachable 
     63        # reject (what to do with anything not allowed earlier) 
     64        iptables -A OUTPUT -p tcp -j REJECT --reject-with tcp-reset 
     65        iptables -A OUTPUT -j REJECT --reject-with icmp-port-unreachable 
    6866 
    69                ### FORWARDING 
    70                ### (connections routed through the router) 
     67        ### FORWARDING 
     68        ### (connections routed through the router) 
    7169 
    72                # base case 
    73                iptables -P FORWARD DROP  
    74                iptables -A FORWARD -m state --state INVALID -j DROP 
    75                iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
    76                iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 
     70        # base case 
     71        iptables -P FORWARD DROP  
     72        iptables -A FORWARD -m state --state INVALID -j DROP 
     73        iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
     74        iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 
    7775 
    78                
    79                # insert accept rule or to jump to new accept-check table here 
    80                
    81                iptables -A FORWARD -j forwarding_rule 
     76       
     77        # insert accept rule or to jump to new accept-check table here 
     78       
     79        iptables -A FORWARD -j forwarding_rule 
    8280 
    83                # allow 
    84                iptables -A FORWARD -i br0 -o br0 -j ACCEPT 
    85                [ -z "$WAN" ] || iptables -A FORWARD -i $LAN -o $WAN -j ACCEPT 
     81        # allow 
     82        iptables -A FORWARD -i br0 -o br0 -j ACCEPT 
     83        [ -z "$WAN" ] || iptables -A FORWARD -i $LAN -o $WAN -j ACCEPT 
    8684 
    87                # reject (what to do with anything not allowed earlier) 
    88                # uses the default -P DROP 
     85        # reject (what to do with anything not allowed earlier) 
     86        # uses the default -P DROP 
    8987 
    90                ### MASQ 
    91                iptables -t nat -A PREROUTING -j prerouting_rule 
    92                iptables -t nat -A POSTROUTING -j postrouting_rule 
    93                [ -z "$WAN" ] || iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE 
    94                ;; 
    95        stop) 
    96                ## CLEAR TABLES 
    97                for T in filter nat; do 
    98                        iptables -t $T -F 
    99                        iptables -t $T -X 
    100                done 
    101                ;; 
    102         restart) 
    103                 $0 stop 
    104                 $0 start 
    105                 ;; 
    106         *) 
    107                 echo "Usage: $0 {start | stop | restart}" 
    108                 ;; 
     88        ### MASQ 
     89        iptables -t nat -A PREROUTING -j prerouting_rule 
     90        iptables -t nat -A POSTROUTING -j postrouting_rule 
     91        [ -z "$WAN" ] || iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE 
     92        ;; 
     93stop) 
     94        ## CLEAR TABLES 
     95        for T in filter nat; do 
     96                iptables -t $T -F 
     97                iptables -t $T -X 
     98        done 
     99        ;; 
     100restart) 
     101       $0 stop 
     102       $0 start 
     103       ;; 
     104*) 
     105       echo "Usage: $0 {start | stop | restart}" 
     106       ;; 
    109107esac 
    110108exit 0 
  • trunk/freewrt/package/l2tpd/files/l2tpd.init

    r1 r191  
    88 
    99case $1 in 
    10  start) 
     10autostart|start) 
    1111  $BIN $OPTIONS 
    1212  ;; 
  • trunk/freewrt/package/lighttpd/files/lighttpd.init

    r1 r191  
    99 
    1010case $1 in 
    11  start) 
     11autostart|start) 
    1212  mkdir -p $LOG_D 
    1313  mkdir -p $RUN_D 
  • trunk/freewrt/package/mini_httpd/files/mini_httpd.init

    r1 r191  
    88 
    99case $1 in 
    10  start) 
     10autostart|start) 
    1111  [ -d $RUN_D ] || mkdir -p $RUN_D 
    1212  $BIN $OPTIONS 2>/dev/null 
  • trunk/freewrt/package/miredo/files/miredo-server.init

    r1 r191  
    88 
    99case $1 in 
    10  start) 
     10autostart|start) 
    1111  [ -d $RUN_D ] || mkdir -p $RUN_D 
    1212  insmod ipv6 
  • trunk/freewrt/package/miredo/files/miredo.init

    r1 r191  
    88 
    99case $1 in 
    10  start) 
     10autostart|start) 
    1111  [ -d $RUN_D ] || mkdir -p $RUN_D 
    1212  insmod ipv6 
  • trunk/freewrt/package/monit/files/monit.init

    r1 r191  
    88 
    99case $1 in 
    10  start) 
     10autostart|start) 
    1111  mkdir -p $RUN_D 
    1212  $BIN $OPTIONS 
  • trunk/freewrt/package/mrd6/files/mrd6.init

    r1 r191  
    22 
    33case $1 in 
    4 start) 
     4autostart|start) 
    55        /sbin/lsmod | grep ipv6 > /dev/null 
    66        if [ "$?" != "0" ] 
  • trunk/freewrt/package/mt-daapd/files/mt-daapd.init

    r1 r191  
    88 
    99case $1 in 
    10  start) 
     10autostart|start) 
    1111  [ -d $RUN_D ] || mkdir -p $RUN_D 
    1212  $BIN $OPTIONS 
  • trunk/freewrt/package/net-snmp/files/snmpd.init

    r1 r191  
    1010 
    1111case $1 in 
    12  start) 
     12autostart|start) 
    1313  [ -d $LIB_D ] || mkdir -p $LIB_D 
    1414  [ -d $LOG_D ] || mkdir -p $LOG_D 
  • trunk/freewrt/package/olsrd/files/olsrd.init

    r1 r191  
    55 
    66case $1 in 
    7  start) 
     7autostart|start) 
    88  olsrd $OPTIONS 
    99  ;; 
  • trunk/freewrt/package/osiris/files/osirisd.init

    r1 r191  
    99 
    1010case $1 in 
    11  start) 
     11autostart|start) 
    1212  mkdir -p $LIB_D 
    1313  mkdir -p $RUN_D 
  • trunk/freewrt/package/p910nd/files/p910nd.init

    r1 r191  
    3535 
    3636case $1 in 
    37  start) 
     37autostart|start) 
    3838  _start 
    3939  ;; 
  • trunk/freewrt/package/parprouted/files/parprouted.init

    r1 r191  
    66 
    77case $1 in 
    8  start) 
     8autostart|start) 
    99  $BIN $OPTIONS 
    1010  ;; 
  • trunk/freewrt/package/peercast/files/peercast.init

    r1 r191  
    44 
    55case $1 in 
    6  start) 
     6autostart|start) 
    77  peercast -d -i /etc/peercast.ini -l /var/log/peercast.log -p $PID_F 
    88  ;; 
  • trunk/freewrt/package/peerguardian/files/peerguardian.init

    r1 r191  
    88 
    99case $1 in 
    10  start) 
     10autostart|start) 
    1111  $BIN $OPTIONS 
    1212  ;; 
  • trunk/freewrt/package/php4/files/php.init

    r1 r191  
    66 
    77case $1 in 
    8  start) 
     8autostart|start) 
    99  $BIN -b $PORT & 
    1010  ;; 
  • trunk/freewrt/package/php5/files/php.init

    r1 r191  
    66 
    77case $1 in 
    8  start) 
     8autostart|start) 
    99  $BIN -b $PORT & 
    1010  ;; 
  • trunk/freewrt/package/pmacct/files/nfacctd.init

    r1 r191  
    88 
    99case $1 in 
    10  start) 
     10autostart|start) 
    1111  mkdir -p $RUN_D 
    1212  $BIN $OPTIONS 
  • trunk/freewrt/package/pmacct/files/pmacctd.init

    r1 r191  
    88 
    99case $1 in 
    10  start) 
     10autostart|start) 
    1111  mkdir -p $RUN_D 
    1212  $BIN $OPTIONS 
  • trunk/freewrt/package/portmap/files/portmap.init

    r1 r191  
    66 
    77case $1 in 
    8  start) 
     8autostart|start) 
    99  $BIN $OPTIONS 
    1010  ;; 
  • trunk/freewrt/package/pptpd/files/pptpd.init

    r1 r191  
    88 
    99case $1 in 
    10  start) 
     10autostart|start) 
    1111  mkdir -p $RUN_D 
    1212  for m in arc4 sha1 slhc crc-ccitt ppp_generic ppp_async ppp_mppe_mppc; do 
  • trunk/freewrt/package/quagga/files/quagga.init

    r1 r191  
    9797# check command 
    9898 
    99 case ${COMMAND} 
    100 in 
    101         start|stop|restart) 
    102                 ;; 
    103         watchrestart) 
    104                 if [ -n "$ARG_DAEMONS" ] 
    105                 then 
    106                         echo "${ME}: watchrestart mode is only for use by watchquagga" 
    107                         exit 2 
    108                 fi 
    109                 ;; 
    110         *) 
    111                 usage 
    112                 ;; 
     99case ${COMMAND} in 
     100autostart|start|stop|restart) 
     101        ;; 
     102watchrestart) 
     103        if [ -n "$ARG_DAEMONS" ] 
     104        then 
     105                echo "${ME}: watchrestart mode is only for use by watchquagga" 
     106                exit 2 
     107        fi 
     108        ;; 
     109*) 
     110        usage 
     111        ;; 
    113112esac 
    114113 
    115114# select daemons to start 
    116115 
    117 case ${COMMAND} 
    118 in 
    119         start|restart|watchrestart) 
    120                 START_DAEMONS= 
    121                 for d in ${DAEMONS_STARTSEQ} 
    122                 do 
    123                         [ -x "${BINDIR}/${d}" -a -f "${CONFDIR}/${d}.conf" ] \ 
    124                         && START_DAEMONS="${START_DAEMONS}${d} " 
    125                 done 
    126                 WATCHQUAGGA_DAEMONS=${START_DAEMONS} 
    127                 if is_in watchquagga "${DAEMONS_STARTSEQ}" 
    128                 then 
    129                         START_DAEMONS="${START_DAEMONS} watchquagga" 
    130                 fi 
    131                 if [ -n "${ARG_DAEMONS}" ] 
    132                 then 
    133                         if select_subset "${ARG_DAEMONS}" "${DAEMONS}" 
    134                         then 
    135                                 if select_subset "${ARG_DAEMONS}" "${START_DAEMONS}" 
    136                                 then 
    137                                         START_DAEMONS=${RESULT} 
    138                                 else 
    139                                         die "these daemons are not startable:${RESULT}." 
    140                                 fi 
    141                         else 
    142                                 die "unknown daemons:${RESULT}; choose from: ${DAEMONS}." 
    143                         fi 
    144                 fi 
    145                 ;; 
     116case ${COMMAND} in 
     117autostart|start|restart|watchrestart) 
     118        START_DAEMONS= 
     119        for d in ${DAEMONS_STARTSEQ} 
     120        do 
     121                [ -x "${BINDIR}/${d}" -a -f "${CONFDIR}/${d}.conf" ] \ 
     122                && START_DAEMONS="${START_DAEMONS}${d} " 
     123        done 
     124        WATCHQUAGGA_DAEMONS=${START_DAEMONS} 
     125        if is_in watchquagga "${DAEMONS_STARTSEQ}" 
     126        then 
     127                START_DAEMONS="${START_DAEMONS} watchquagga" 
     128        fi 
     129        if [ -n "${ARG_DAEMONS}" ] 
     130        then 
     131                if select_subset "${ARG_DAEMONS}" "${DAEMONS}" 
     132                then 
     133                    &