test -n "$_HAVE_INTERFACE_OPTIONS" || _generateInterfaceOptions "$vdir"
+ if test -e "$vdir"/noncontext -o \
+ \( -e "$vdir"/spaces/net -a ! -e "$vdir"/ncontext \); then
+ _HAVE_CHBIND_OPTIONS=1
+ return 0
+ fi
+
local f="$vdir"/interfaces/bcast
getFileValue bcast "$f"
f="$vdir"/interfaces/lback
local vdir="$1"
local d="$vdir"/spaces
local shared
-
- if test -e "$d"/pid; then
- getFileValue shared "$d"/pid
- if test -z "$shared"; then
- OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --pid )
- else
- OPTS_VSPACE_SHARED=( "${OPTS_VSPACE_SHARED[@]}" --pid )
- VSPACE_SHARED_CMD=( "${VSPACE_SHARED_CMD[@]}" $_VSPACE --enter "$shared" --pid -- )
- fi
- fi
-
- if test -e "$d"/net; then
- getFileValue shared "$d"/net
- # network context and namespace don't make much sense
- _HAVE_CHBIND_OPTIONS=1
- CHBIND_CMD=()
- if test -z "$shared"; then
- OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --net )
- else
- OPTS_VSPACE_SHARED=( "${OPTS_VSPACE_SHARED[@]}" --net )
- VSPACE_SHARED_CMD=( "${VSPACE_SHARED_CMD[@]}" $_VSPACE --enter "$shared" --net -- )
+ local space
+
+ for space in pid net; do
+ if test -e "$d"/$space; then
+ getFileValue shared "$d"/$space || shared=""
+ if test -z "$shared"; then
+ OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --$space )
+ elif test "$shared" = "0"; then
+ : # Do nothing
+ else
+ OPTS_VSPACE_SHARED=( "${OPTS_VSPACE_SHARED[@]}" --$space )
+ VSPACE_SHARED_CMD=( "${VSPACE_SHARED_CMD[@]}" $_VSPACE --enter "$shared" --$space -- )
+ fi
fi
- fi
+ done
local mask
getFileValue mask "$d"/mask || \
{
hasCgroup || return 1
test -d "$CGROUP_MNT" || return 1
+ memcg=""
+ if $_VSERVER_INFO - FEATURE memcg; then
+ memcg=1
+ fi
test -d "$1/cgroup" -o \
- \( -d "$__CONFDIR/.defaults/cgroup" -a \
+ \( \( -d "$__CONFDIR/.defaults/cgroup" -o -n "$memcg" \) -a \
! -e "$1/nocgroup" \)
}
useCgroup "$vdir" || return 0
findDir dir "$vdir/cgroup" "$__CONFDIR/.defaults/cgroup" ""
- test -d "$dir" || return 0
- if test -r "$dir"/name; then
+ if test -n "$dir" -a -r "$dir"/name; then
read name < "$dir"/name
else
name="$VSERVER_NAME"
cat "$parent/$i" > "$CGROUP_MNT/$name/$i"
done
- shopt -s nullglob
- for i in "$dir"/*; do
- f="${i##*/}"
- test "$f" != mnt -a "$f" != subsys -a \
- "$f" != inherit -a "$f" != name || continue
- cat "$i" > "$CGROUP_MNT/$name/$f"
- done
+ if test -n "$dir"; then
+ shopt -s nullglob
+ for i in "$dir"/*; do
+ f="${i##*/}"
+ test "$f" != mnt -a "$f" != subsys -a \
+ "$f" != inherit -a "$f" != name || continue
+ cat "$i" > "$CGROUP_MNT/$name/$f"
+ done
+ fi
fi
echo "$$" > "$CGROUP_MNT/$name/tasks"
elif test "$action" = "destroy"; then