X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fscripts%2Fvserver.functions;h=1563d9c8aabb81d9332bafae0daf7f972be6ce8f;hb=957c8385551257aec49f9eb1cdbb7b9e8084a053;hp=26fd2010bcc3f09bde39603803f7f4cadae33df8;hpb=47c3ba10c63e6f9ec446c8477e53601ad00652ca;p=util-vserver.git diff --git a/util-vserver/scripts/vserver.functions b/util-vserver/scripts/vserver.functions index 26fd201..1563d9c 100644 --- a/util-vserver/scripts/vserver.functions +++ b/util-vserver/scripts/vserver.functions @@ -516,6 +516,8 @@ function enableInterfaces local i=0 declare -a var + lock "$LOCKDIR"/vserver.interfaces + while test $i -lt $INTERFACE_CMDS_IDX; do eval var='( "${INTERFACE_CMDS_'$i'[@]}" )' local type=${var[0]} @@ -530,16 +532,19 @@ function enableInterfaces shift 2 $_MODPROBE ${name:+-o "$name"} "$mod" "$@" ;; - NAMEIF) $_NAMEIF "$@";; - VCONFIG) $_VCONFIG add "$@";; - IP_ADDR) $_IP addr add "$@";; - IP_LINK) $_IP link set "$@";; - IP_ROUTE) $_IP route add "$@";; - *) echo "Unknown interface-command type '$type'" >&2; false;; + NAMEIF) $_NAMEIF "$@";; + VCONFIG) $_VCONFIG add "$@";; + IP_ADDR) $_IP addr add "$@";; + IP_ADDR_FLUSH) $_IP addr flush "$@";; + IP_LINK) $_IP link set "$@";; + IP_ROUTE) $_IP route add "$@";; + *) echo "Unknown interface-command type '$type'" >&2; false;; esac let ++i done + + unlock 1 } function disableInterfaces @@ -549,6 +554,8 @@ function disableInterfaces local i=$INTERFACE_CMDS_IDX declare -a var + lock "$LOCKDIR"/vserver.interfaces + while test $i -gt 0; do let --i || : @@ -558,16 +565,19 @@ function disableInterfaces set -- "${var[@]}" case "$type" in - IPTABLES) ;; ## TODO - MODPROBE) $_RMMOD "${2:-$1}";; - NAMEIF) ;; - VCONFIG) $_VCONFIG rem "$@";; - IP_ADDR) $_IP addr del "$@";; - IP_LINK) ;; ## Ignore the link-down command for now - IP_ROUTE) $_IP route del "$@";; - *) echo "Unknown interface-command type '$type'" >&2; false;; + IPTABLES) ;; ## TODO + MODPROBE) $_RMMOD "${2:-$1}";; + NAMEIF) ;; + VCONFIG) $_VCONFIG rem "$@";; + IP_ADDR) $_IP addr del "$@";; + IP_ADDR_FLUSH) ;; + IP_LINK) ;; ## Ignore the link-down command for now + IP_ROUTE) $_IP route del "$@";; + *) echo "Unknown interface-command type '$type'" >&2; false;; esac done + + unlock 1 } ## Usage: prepareInit @@ -709,22 +719,30 @@ will be killed nevertheless..." function _sourceWrap { - local vdir name flavor start i + local vdir name flavor start i already_handled base . "$@" } ## Usage: execScriptlets function execScriptlets { - local vdir=$1 - local name=$2 - local flavor=$3 - local start= - local i + declare -r vdir=$1 + declare -r name=$2 + declare -r flavor=$3 + local base i + + for base in "$vdir"/scripts "$CONFDIR"/.defaults/scripts; do + local DONT_SKIP_DEFAULTS= + local already_handled= + + for i in "$base/$flavor" "$base/$flavor.d"/*; do + test -f "$i" -a -r "$i" || continue + already_handled=1 + local start= + test -x "$i" || start=_sourceWrap + $start "$i" "$flavor" "$name" + done - for i in "$vdir/scripts/$flavor" "$vdir/scripts/$flavor.d"/*; do - test -f "$i" -a -r "$i" || continue - test -x "$i" || start=_sourceWrap - $start "$i" "$flavor" "$name" + test -z "$already_handled" -o "$DONT_SKIP_DEFAULTS" || break done }