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]}
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
local i=$INTERFACE_CMDS_IDX
declare -a var
+ lock "$LOCKDIR"/vserver.interfaces
+
while test $i -gt 0; do
let --i || :
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 <vserver-directory>
function _sourceWrap
{
- local vdir name flavor start i
+ local vdir name flavor start i already_handled base
. "$@"
}
## Usage: execScriptlets <vserver-cfgdir> <vserver-name> <script-flavor>
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
}