summaryrefslogtreecommitdiff
path: root/etc
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@baturin.org>2014-07-25 18:13:39 +0200
committerDaniil Baturin <daniil@baturin.org>2014-07-25 18:13:39 +0200
commit974a522ebd298aecb4f502bab89d76a4ddbec899 (patch)
tree50a782e13bb1529a4199b621ffbf9752200ef969 /etc
parente70d602929e3017dd2cbac99900f9d4c436d2a60 (diff)
downloadvyatta-cfg-system-974a522ebd298aecb4f502bab89d76a4ddbec899.tar.gz
vyatta-cfg-system-974a522ebd298aecb4f502bab89d76a4ddbec899.zip
Add vyod-intfwatchd for restoring IPv6 addresses after link flaps.
As bad as it can be, it seems to sort of work.
Diffstat (limited to 'etc')
-rwxr-xr-xetc/init.d/vyos-intfwatchd87
1 files changed, 87 insertions, 0 deletions
diff --git a/etc/init.d/vyos-intfwatchd b/etc/init.d/vyos-intfwatchd
new file mode 100755
index 00000000..fd7216c6
--- /dev/null
+++ b/etc/init.d/vyos-intfwatchd
@@ -0,0 +1,87 @@
+#! /bin/sh
+
+### BEGIN INIT INFO
+# Provides: vyos-intfwatchd
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop:
+# Short-Description: Interface status monitoring daemon
+### END INIT INFO
+
+set -e
+
+# /etc/init.d/vyos-intfwatchd: start and stop the event watching daemon
+
+test -x /opt/vyatta/sbin/vyos-intfwatchd || exit 0
+
+umask 022
+
+. /lib/lsb/init-functions
+
+if [ -n "$2" ]; then
+ EWD_OPTS="$EWD_OPTS $2"
+fi
+
+# Are we running from init?
+run_by_init() {
+ ([ "$previous" ] && [ "$runlevel" ]) || [ "$runlevel" = S ]
+}
+
+check_dev_null() {
+ if [ ! -c /dev/null ]; then
+ if [ "$1" = log_end_msg ]; then
+ log_end_msg 1 || true
+ fi
+ if ! run_by_init; then
+ log_action_msg "/dev/null is not a character device!"
+ fi
+ exit 1
+ fi
+}
+
+export PATH="${PATH:+$PATH:}/usr/sbin:/sbin:/usr/bin:/opt/vyatta/sbin"
+
+case "$1" in
+ start)
+ check_dev_null
+ log_daemon_msg "Starting vyos-intfwatchd" "vyos-intfwatchd"
+ if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/vyos-intfwatchd.pid --exec /opt/vyatta/sbin/vyos-intfwatchd -- $EWD_OPTS; then
+ log_end_msg 0
+ else
+ log_end_msg 1
+ fi
+ ;;
+ stop)
+ log_daemon_msg "Stopping vyos-intfwatchd" "vyos-intfwatchd"
+ VI_PID=`cat /var/run/vyos-intfwatchd.pid`
+ for p in `pgrep -P $VI_PID`; do
+ kill $p
+ done
+ if start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/vyos-intfwatchd.pid; then
+ log_end_msg 0
+ else
+ log_end_msg 1
+ fi
+ ;;
+ restart)
+ log_daemon_msg "Restarting vyos-intfwatchd" "vyos-intfwatchd"
+ start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile /var/run/vyos-intfwatchd.pid
+ check_for_no_start log_end_msg
+ check_dev_null log_end_msg
+ if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/vyos-intfwatchd.pid --exec /opt/vyatta/sbin/vyos-intfwatchd -- $EWD_OPTS; then
+ log_end_msg 0
+ else
+ log_end_msg 1
+ fi
+ ;;
+ status)
+ status_of_proc -p /var/run/vyos-intfwatchd.pid /opt/vyatta/sbin/vyos-intfwatchd vyos-intfwatchd && exit 0 || exit $?
+ ;;
+
+ *)
+ log_action_msg "Usage: /etc/init.d/vyos-intfwatchd {start|stop|restart|status}"
+ exit 1
+esac
+
+exit 0