diff options
author | Steven Barth <steven@midlink.org> | 2015-02-17 14:41:04 +0100 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2015-02-17 14:41:04 +0100 |
commit | 29b9032cbef27bc60a20c955d607537fedd554af (patch) | |
tree | 8bb1cf4425919f4ca92ca6f1e6aa4318ac749c7b /odhcp6c-example-script.sh | |
parent | c42e34111e19bd435dc4b5bb3ba81224ea214314 (diff) | |
download | odhcp6c-29b9032cbef27bc60a20c955d607537fedd554af.tar.gz |
example: prevent script from running in parallel to avoid races
Diffstat (limited to 'odhcp6c-example-script.sh')
-rwxr-xr-x | odhcp6c-example-script.sh | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/odhcp6c-example-script.sh b/odhcp6c-example-script.sh index 6215257..a1fb0fc 100755 --- a/odhcp6c-example-script.sh +++ b/odhcp6c-example-script.sh @@ -6,7 +6,7 @@ update_resolv() { local dns="$2" ( - flock -n 9 + flock 9 grep -v "#odhcp6c:$device:" /etc/resolv.conf > /tmp/resolv.conf.tmp for c in $dns; do echo "nameserver $c #odhcp6c:$device:" >> /tmp/resolv.conf.tmp @@ -131,23 +131,25 @@ teardown_interface() { update_resolv "$device" "" } -case "$2" in - bound) - teardown_interface "$1" - setup_interface "$1" - ;; - informed|updated|rebound|ra-updated) - setup_interface "$1" - ;; - stopped|unbound) - teardown_interface "$1" - ;; - started) - teardown_interface "$1" - ;; -esac - -# user rules -[ -f /etc/odhcp6c.user ] && . /etc/odhcp6c.user - -exit 0 +( + flock 9 + case "$2" in + bound) + teardown_interface "$1" + setup_interface "$1" + ;; + informed|updated|rebound|ra-updated) + setup_interface "$1" + ;; + stopped|unbound) + teardown_interface "$1" + ;; + started) + teardown_interface "$1" + ;; + esac + + # user rules + [ -f /etc/odhcp6c.user ] && . /etc/odhcp6c.user +) 9>/tmp/odhcp6c.lock.$1 +rm -f /tmp/odhcp6c.lock.$1 |