summaryrefslogtreecommitdiff
path: root/odhcp6c-example-script.sh
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2015-02-17 14:41:04 +0100
committerSteven Barth <steven@midlink.org>2015-02-17 14:41:04 +0100
commit29b9032cbef27bc60a20c955d607537fedd554af (patch)
tree8bb1cf4425919f4ca92ca6f1e6aa4318ac749c7b /odhcp6c-example-script.sh
parentc42e34111e19bd435dc4b5bb3ba81224ea214314 (diff)
downloadodhcp6c-29b9032cbef27bc60a20c955d607537fedd554af.tar.gz
example: prevent script from running in parallel to avoid races
Diffstat (limited to 'odhcp6c-example-script.sh')
-rwxr-xr-xodhcp6c-example-script.sh44
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