117 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| #
 | |
| #
 | |
| 
 | |
| ### BEGIN INIT INFO
 | |
| # Provides:          isc-dhcp6-server
 | |
| # Required-Start:    $remote_fs $network $syslog
 | |
| # Required-Stop:     $remote_fs $network $syslog
 | |
| # Should-Start:      $local_fs slapd $named
 | |
| # Should-Stop:       $local_fs slapd
 | |
| # Default-Start:     2 3 4 5
 | |
| # Default-Stop:      0 1 6
 | |
| # Short-Description: DHCPv6 server
 | |
| # Description:       Dynamic Host Configuration Protocol Server
 | |
| ### END INIT INFO
 | |
| 
 | |
| PATH=/sbin:/bin:/usr/sbin:/usr/bin
 | |
| OPTIONS="-6"
 | |
| 
 | |
| test -f /usr/sbin/dhcpd || exit 0
 | |
| 
 | |
| DHCPD_DEFAULT="${DHCPD_DEFAULT:-/etc/default/isc-dhcp6-server}"
 | |
| 
 | |
| # It is not safe to start if we don't have a default configuration...
 | |
| if [ ! -f "$DHCPD_DEFAULT" ]; then
 | |
| 	echo "$DHCPD_DEFAULT does not exist! - Aborting..."
 | |
| 	if [ "$DHCPD_DEFAULT" = "/etc/default/isc-dhcp-server" ]; then
 | |
| 		echo "Run 'dpkg-reconfigure isc-dhcp-server' to fix the problem."
 | |
| 	fi
 | |
| 	exit 0
 | |
| fi
 | |
| 
 | |
| . /lib/lsb/init-functions
 | |
| 
 | |
| # Read init script configuration
 | |
| [ -f "$DHCPD_DEFAULT" ] && . "$DHCPD_DEFAULT"
 | |
| 
 | |
| NAME=dhcpd6
 | |
| DESC="ISC DHCPv6 server"
 | |
| # fallback to default config file
 | |
| DHCPD_CONF=${DHCPD_CONF:-/etc/dhcp/dhcpd6.conf}
 | |
| # try to read pid file name from config file, with fallback to /var/run/dhcpd.pid
 | |
| if [ -z "$DHCPD_PID" ]; then
 | |
| 	DHCPD_PID=$(sed -n -e 's/^[ \t]*pid-file-name[ \t]*"(.*)"[ \t]*;.*$/\1/p' < "$DHCPD_CONF" 2>/dev/null | head -n 1)
 | |
| fi
 | |
| DHCPD_PID="${DHCPD_PID:-/var/run/dhcpd6.pid}"
 | |
| 
 | |
| test_config()
 | |
| {
 | |
| 	if ! /usr/sbin/dhcpd -t $OPTIONS -q -cf "$DHCPD_CONF" > /dev/null 2>&1; then
 | |
| 		echo "dhcpd self-test failed. Please fix $DHCPD_CONF."
 | |
| 		echo "The error was: "
 | |
| 		/usr/sbin/dhcpd -t $OPTIONS -cf "$DHCPD_CONF"
 | |
| 		exit 1
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| # single arg is -v for messages, -q for none
 | |
| check_status()
 | |
| {
 | |
|     if [ ! -r "$DHCPD_PID" ]; then
 | |
| 	test "$1" != -v || echo "$NAME is not running."
 | |
| 	return 3
 | |
|     fi
 | |
|     if read pid < "$DHCPD_PID" && ps -p "$pid" > /dev/null 2>&1; then
 | |
| 	test "$1" != -v || echo "$NAME is running."
 | |
| 	return 0
 | |
|     else
 | |
| 	test "$1" != -v || echo "$NAME is not running but $DHCPD_PID exists."
 | |
| 	return 1
 | |
|     fi
 | |
| }
 | |
| 
 | |
| case "$1" in
 | |
| 	start)
 | |
| 		test_config
 | |
| 		log_daemon_msg "Starting $DESC" "$NAME"
 | |
| 		start-stop-daemon --start --quiet --pidfile "$DHCPD_PID" \
 | |
| 			--exec /usr/sbin/dhcpd -- \
 | |
| 			-q $OPTIONS -cf "$DHCPD_CONF" -pf "$DHCPD_PID" $INTERFACES
 | |
| 		sleep 2
 | |
| 
 | |
| 		if check_status -q; then
 | |
| 			log_end_msg 0
 | |
| 		else
 | |
| 			log_failure_msg "check syslog for diagnostics."
 | |
| 			log_end_msg 1
 | |
| 			exit 1
 | |
| 		fi
 | |
| 		;;
 | |
| 	stop)
 | |
| 		log_daemon_msg "Stopping $DESC" "$NAME"
 | |
| 		start-stop-daemon --stop --quiet --pidfile "$DHCPD_PID"
 | |
| 		log_end_msg $?
 | |
| 		rm -f "$DHCPD_PID"
 | |
| 		;;
 | |
| 	restart | force-reload)
 | |
| 		test_config
 | |
| 		$0 stop
 | |
| 		sleep 2
 | |
| 		$0 start
 | |
| 		if [ "$?" != "0" ]; then
 | |
| 			exit 1
 | |
| 		fi
 | |
| 		;;
 | |
| 	status)
 | |
| 		echo -n "Status of $DESC: "
 | |
| 		check_status -v
 | |
| 		exit "$?"
 | |
| 		;;
 | |
| 	*)
 | |
| 		echo "Usage: $0 {start|stop|restart|force-reload|status}"
 | |
| 		exit 1 
 | |
| esac
 | |
| 
 | |
| exit 0
 |