61e3778
#!/bin/sh
61e3778
#
61e3778
### BEGIN INIT INFO
61e3778
# Provides: dhcpd
61e3778
# Default-Start:
61e3778
# Default-Stop:
61e3778
# Should-Start:
61e3778
# Required-Start: $network
61e3778
# Required-Stop:
61e3778
# Short-Description: Start and stop the DHCPv6 server
61e3778
# Description: dhcpd provides the Dynamic Host Configuration Protocol (DHCPv6)
61e3778
#              server.
61e3778
### END INIT INFO
61e3778
#
61e3778
# The fields below are left around for legacy tools (will remove later).
61e3778
#
61e3778
# chkconfig: - 65 35
61e3778
# description: dhcpd provides the Dynamic Host Configuration Protocol (DHCPv6) \
61e3778
#              server
61e3778
# processname: dhcpd
61e3778
# config: /etc/dhcp/dhcpd6.conf
61e3778
# config: /var/lib/dhcpd/dhcpd6.leases
61e3778
# pidfile: /var/run/dhcpd6.pid
61e3778
61e3778
. /etc/rc.d/init.d/functions
61e3778
61e3778
RETVAL=0
61e3778
61e3778
prog=dhcpd
61e3778
exec=/usr/sbin/dhcpd
61e3778
lockfile=/var/lock/subsys/dhcpd6
61e3778
pidfile=/var/run/dhcpd6.pid
61e3778
statedir=/var/lib/dhcpd
61e3778
default_config=/etc/dhcp/dhcpd6.conf
61e3778
61e3778
[ -f /etc/sysconfig/dhcpd6 ] && . /etc/sysconfig/dhcpd6
61e3778
61e3778
# if the user specified a different config file, make sure we reference it
61e3778
findConfig() {
61e3778
    for arg in $DHCPDARGS ; do
61e3778
        if [ "$found" = 1 ]; then
61e3778
            [ -f "$arg" ] && echo "$arg"
61e3778
            return
61e3778
        fi
61e3778
        if [ "$arg" = "-cf" ]; then
61e3778
            found=1
61e3778
            continue
61e3778
        fi
61e3778
    done
61e3778
    echo $default_config
61e3778
}
61e3778
61e3778
config="$(findConfig "$DHCPDARGS")"
61e3778
61e3778
if [ ! -f $statedir/dhcpd6.leases ] ; then
61e3778
    mkdir -p $statedir
61e3778
    touch $statedir/dhcpd6.leases
61e3778
    [ -x /sbin/restorecon ] && [ -d /selinux ] && /sbin/restorecon $statedir/dhcpd6.leases >/dev/null 2>&1
61e3778
fi
61e3778
61e3778
configtest() {
61e3778
    [ -x $exec ] || return 5
61e3778
    [ -f $config ] || return 6
61e3778
    $exec -q -t -6 -cf $config
61e3778
    RETVAL=$?
61e3778
    if [ $RETVAL -eq 1 ]; then
61e3778
        $exec -t -6 -cf $config
61e3778
    else
61e3778
        echo "Syntax: OK" >&2
61e3778
    fi
61e3778
    return $RETVAL
61e3778
}
61e3778
61e3778
rh_status() {
61e3778
    status -p $pidfile -l $(basename $lockfile) $exec
61e3778
}
61e3778
61e3778
rh_status_q() {
61e3778
    rh_status >/dev/null 2>&1
61e3778
}
61e3778
61e3778
start() {
61e3778
    [ `id -u` -eq 0 ] || return 4
61e3778
    [ -x $exec ] || return 5
61e3778
    [ -f $config ] || return 6
61e3778
61e3778
    rh_status_q && return 0
61e3778
61e3778
    # add default dhcpd6.conf configuration file if there's no one in DHCPDARGS
61e3778
    [ "${config}" = "${default_config}" ] && DHCPDARGS="$DHCPDARGS -cf $default_config"
61e3778
61e3778
    echo -n $"Starting $prog (DHCPv6): "
16b016c
    daemon --pidfile=$pidfile $exec -6 $DHCPDARGS 2>/dev/null
61e3778
    RETVAL=$?
61e3778
    echo
61e3778
    [ $RETVAL -eq 0 ] && touch $lockfile
61e3778
    return $RETVAL
61e3778
}
61e3778
61e3778
stop() {
61e3778
    [ `id -u` -eq 0 ] || return 4
61e3778
61e3778
    rh_status_q || return 0
61e3778
61e3778
    echo -n $"Shutting down $prog (DHCPv6): "
61e3778
    killproc -p $pidfile $prog
61e3778
    RETVAL=$?
61e3778
61e3778
    echo
61e3778
    [ $RETVAL -eq 0 ] && rm -f $lockfile
61e3778
    return $RETVAL
61e3778
}
61e3778
61e3778
usage() {
61e3778
    echo $"Usage: $0 {start|stop|restart|force-reload|condrestart|try-restart|configtest|status}"
61e3778
}
61e3778
61e3778
if [ $# -gt 1 ]; then
61e3778
    exit 2
61e3778
fi
61e3778
61e3778
case "$1" in
61e3778
    start)
61e3778
        start
61e3778
        ;;
61e3778
    stop)
61e3778
        stop
61e3778
        ;;
61e3778
    restart|force-reload)
61e3778
        stop ; start
61e3778
        ;;
61e3778
    condrestart|try-restart)
61e3778
        rh_status_q || exit 0
61e3778
        stop ; start
61e3778
        ;;
61e3778
    reload)
61e3778
        usage
61e3778
        # unimplemented feature
61e3778
        exit 3
61e3778
        ;;
61e3778
    configtest)
61e3778
        configtest
61e3778
        ;;
61e3778
    status)
61e3778
        rh_status
61e3778
        ;;
61e3778
    *)
61e3778
        usage
61e3778
        exit 2
61e3778
        ;;
61e3778
esac
61e3778
61e3778
exit $?