X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fscripts%2Fvrpm-preload;h=c82978c22eba4766f22ee65f06e0d7b34be44a36;hb=319929791248f823537ac5fb2fe10a01b5b820b9;hp=e6cbc708aa134f9905a12c4b84db0e7c17d32181;hpb=dfd7c5abfa53e81582a7ca7e88f6ab82dda39085;p=util-vserver.git diff --git a/util-vserver/scripts/vrpm-preload b/util-vserver/scripts/vrpm-preload index e6cbc70..c82978c 100755 --- a/util-vserver/scripts/vrpm-preload +++ b/util-vserver/scripts/vrpm-preload @@ -25,6 +25,28 @@ test -e "$UTIL_VSERVER_VARS" || { } . "$UTIL_VSERVER_VARS" +function getCapFlags +{ + local ctx=$1 + + if test "$ctx" && ! $_VSERVER_INFO - FEATURE migrate; then + set -- $($_CHCONTEXT_COMPAT --xid 1 \ + sh -c "cat /proc/[0-9]*/status | egrep '^(CapBset|s_context|ctxflags)'" | \ + grep -B 1 -A 1 "^s_context: $ctx " | \ + sed -e '1,3p;d' | awk '{ print $2 }') + else + set -- + fi + + if test "$3"; then + RPM_FAKE_CAP=$[ ~0x$1 ] + RPM_FAKE_FLAGS=$3 + else + RPM_FAKE_CAP=$[ ~0xd40c04ff ] + RPM_FAKE_FLAGS=4 + fi +} + lib=$_RPM_FAKE_SO #scall_nr=$($_VSERVER_INFO x SYSCALL_NEW_S_CONTEXT_NR 2>/dev/null) @@ -45,10 +67,14 @@ test "$bin" || { exit 1 } + +getCapFlags "$ctx" + +export RPM_FAKE_CAP RPM_FAKE_FLAGS + #RPM_FAKE_S_CONTEXT_REV=$scall_rev \ #RPM_FAKE_S_CONTEXT_NR=$scall_nr \ RPM_FAKE_CHROOT=$vdir \ RPM_FAKE_CTX=$ctx \ -RPM_FAKE_CAP=$[ ~0xd40c04ff ] \ LD_PRELOAD=$lib${LD_PRELOAD:+:$LD_PRELOAD} \ exec $bin "$@"