diff --git a/dhcp.changes b/dhcp.changes index f3f7801..abd6e10 100644 --- a/dhcp.changes +++ b/dhcp.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Tue May 18 08:46:37 UTC 2010 - mt@suse.de + +- Added rc.dhcrelay6 as source in the spec file + ------------------------------------------------------------------- Tue May 11 11:22:48 UTC 2010 - mt@suse.de diff --git a/dhcp.spec b/dhcp.spec index b0fc0fe..8181147 100644 --- a/dhcp.spec +++ b/dhcp.spec @@ -33,7 +33,7 @@ License: BSD3c(or similar) Group: Productivity/Networking/Boot/Servers AutoReqProv: on Version: 4.1.1 -Release: 1 +Release: 2 Summary: Common Files Used by ISC DHCP Software Url: http://www.isc.org/software/dhcp Source0: dhcp-%{isc_version}.tar.bz2 @@ -43,6 +43,7 @@ Source0: dhcp-%{isc_version}.tar.bz2 Source10: rc.dhcpd Source11: rc.dhcpd6 Source12: rc.dhcrelay +Source13: rc.dhcrelay6 Source14: sysconfig.dhcpd Source15: sysconfig.syslog-dhcpd Source16: sysconfig.dhcrelay diff --git a/rc.dhcrelay6 b/rc.dhcrelay6 new file mode 100644 index 0000000..ddecca8 --- /dev/null +++ b/rc.dhcrelay6 @@ -0,0 +1,220 @@ +#! /bin/sh +# Copyright (c) 1996, 1997, 1998 S.u.S.E. GmbH +# Copyright (c) 1998, 1999, 2000, 2001 SuSE GmbH +# Copyright (c) 2002 SuSE Linux AG +# Copyright (c) 2003-2010 SUSE LINUX Products GmbH +# +# Author: Peter Poeml , 2001 +# Marius Tomaschewski , 2010 +# +# /etc/init.d/dhcrelay6 +# and its symbolic link +# /usr/sbin/rcdhcrelay6 +# +### BEGIN INIT INFO +# Provides: dhcrelay6 +# Required-Start: $network $remote_fs network-remotefs +# Should-Start: $named $syslog $time +# Required-Stop: $network $remote_fs network-remotefs +# Should-Stop: $named $syslog +# Default-Start: 3 5 +# Default-Stop: 0 1 2 6 +# Short-Description: DHCPv6 Relay +# Description: Start DHCPv6 (Dynamic Host Configuration Protocol) +# relay agent, forwarding DHCP requests from one +# physical network segment to another. +### END INIT INFO + + +DAEMON="ISC DHCPv6 relay agent" +DAEMON_BIN=/usr/sbin/dhcrelay6 +DAEMON_CONF=/etc/sysconfig/dhcrelay +DAEMON_PIDFILE=/var/run/dhcrelay6.pid +STARTPROC_LOGFILE=/var/log/rc.dhcrelay6.log +SUPPORTS_HUP="no" + +test -s "$DAEMON_CONF" && . "$DAEMON_CONF" +test -x $DAEMON_BIN || { + echo >&2 "$0: \"$DAEMON_BIN\" is not executable." + test "x$1" = xstop && exit 0 || exit 5 +} + +# Shell functions sourced from /etc/rc.status: +# rc_check check and set local and overall rc status +# rc_status check and set local and overall rc status +# rc_status -v ditto but be verbose in local rc status +# rc_status -v -r ditto and clear the local rc status +# rc_failed set local and overall rc status to failed +# rc_failed set local and overall rc status to +# rc_reset clear local rc status (overall remains) +# rc_exit exit appropriate to overall rc status +. /etc/rc.status + +# First reset status of this service +rc_reset + +# Return values acc. to LSB for all commands but status: +# 0 - success +# 1 - generic or unspecified error +# 2 - invalid or excess argument(s) +# 3 - unimplemented feature (e.g. "reload") +# 4 - insufficient privilege +# 5 - program is not installed +# 6 - program is not configured +# 7 - program is not running +# +# Note that starting an already running service, stopping +# or restarting a not-running service as well as the restart +# with force-reload (in case signalling is not supported) are +# considered a success. + +case "$1" in + start) + echo -n "Starting $DAEMON" + checkproc $DAEMON_BIN && { echo -n "... already running"; rc_status -v; exit 0; } + + for l in $DHCRELAY6_LOWER_INTERFACES ; do + test x"$l" = x && continue + DHCRELAY6_LOWER_INTERFACES_ARGS="$DHCRELAY6_LOWER_INTERFACES_ARGS -l $l" + done + for u in $DHCRELAY6_UPPER_INTERFACES ; do + test x"$u" = x && continue + DHCRELAY6_UPPER_INTERFACES_ARGS="$DHCRELAY6_UPPER_INTERFACES_ARGS -u $u" + done + + ## If interfaces or servers are not set, skip starting of dhcrelay + ## and return with "program not configured" + if [ "x$DHCRELAY6_LOWER_INTERFACES_ARGS" = x -o \ + "x$DHCRELAY6_UPPER_INTERFACES_ARGS" = x ]; then + # Tell the user this has skipped + rc_status -s + # service is not configured + exit 6; + fi + + + ## Start daemon with startproc(8). If this fails + ## the echo return value is set appropriate. + + # startproc should return 0, even if service is + # already running to match LSB spec. + test "$2" = "-v" && echo -en \ + "\nexecuting '$DAEMON_BIN $DHCRELAY6_OPTIONS $DHCRELAY6_LOWER_INTERFACES_ARGS $DHCRELAY6_UPPER_INTERFACES_ARGS'" + startproc -q -l $STARTPROC_LOGFILE $DAEMON_BIN $DHCRELAY6_OPTIONS $DHCRELAY6_LOWER_INTERFACES_ARGS $DHCRELAY6_UPPER_INTERFACES_ARGS + rc=$? + if ! [ $rc -eq 0 ]; then + if [ $link = $base ] ; then + ## be quiet + cat $STARTPROC_LOGFILE + else + ## be verbose + echo -e -n " please see $STARTPROC_LOGFILE for details "; + fi + ## set status to failed + rc_failed + fi + + # Remember status and be verbose + rc_status -v + ;; + stop) + echo -n "Shutting down $DAEMON" + ## Stop daemon with killproc(8) and if this fails + ## set echo the echo return value. + + killproc -p $DAEMON_PIDFILE -TERM $DAEMON_BIN + + # Remember status and be verbose + rc_status -v + ;; + try-restart) + ## Do a restart only if the service was active before. + ## Note: try-restart is now part of LSB (as of 1.9). + ## RH has a similar command named condrestart. + $0 status + if test $? = 0; then + $0 restart + else + rc_reset # Not running is not a failure. + fi + # Remember status and be quiet + rc_status + ;; + restart) + ## Stop the service and regardless of whether it was + ## running or not, start it again. + $0 stop + sleep 1 + $0 start + + # Remember status and be quiet + rc_status + ;; + force-reload) + ## Signal the daemon to reload its config. Most daemons + ## do this on signal 1 (SIGHUP). + ## If it does not support it, restart. + + $0 stop && sleep 1 && $0 start + rc_status + + echo -n "Reload service $DAEMON" + + if "$SUPPORTS_HUP" = "yes" ; then + killproc -p $DAEMON_PIDFILE -HUP $DAEMON_BIN + #touch $DAEMON_PIDFILE + rc_status -v + else + $0 stop && $0 start + rc_status + fi + ;; + reload) + ## Like force-reload, but if daemon does not support + ## signalling, do nothing (!) + + if "$SUPPORTS_HUP" = "yes" ; then + # If it supports signalling: + echo -n "Reload service $DAEMON" + killproc -p $DAEMON_PIDFILE -HUP $DAEMON_BIN + #touch $DAEMON_PIDFILE + rc_status -v + else + ## Otherwise if it does not support reload: + rc_failed 3 + rc_status -v + fi + ;; + status) + echo -n "Checking for dhcp relay agent: " + ## Check status with checkproc(8), if process is running + ## checkproc will return with exit status 0. + + # Status has a slightly different for the status command: + # 0 - service running + # 1 - service dead, but /var/run/ pid file exists + # 2 - service dead, but /var/lock/ lock file exists + # 3 - service not running + + # NOTE: checkproc returns LSB compliant status values. + checkproc -p $DAEMON_PIDFILE $DAEMON_BIN + rc_status -v + ;; + probe) + ## Optional: Probe for the necessity of a reload, + ## give out the argument which is required for a reload. + + if [ "$DAEMON_CONF" -nt "$DAEMON_PIDFILE" ]; then + if [ "$SUPPORTS_HUP" = "yes" ]; then + echo reload + else + echo restart + fi + fi + ;; + *) + echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe} [-v]" + exit 1 + ;; +esac +rc_exit