Index: python/Makefile-files =================================================================== --- python/Makefile-files (revision 2883) +++ python/Makefile-files (revision 2896) @@ -1,22 +1,23 @@ ## $Id$ ## Copyright (C) 2008 Daniel Hokka Zakrisson -## +## ## This program is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License ## as published by the Free Software Foundation; either version 2 ## of the License, or (at your option) any later version. -## +## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. -## +## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -## +## +AM_INSTALLCHECK_STD_OPTIONS_EXEMPT += python/libvserver.py pyexec_LTLIBRARIES += python/_libvserver.la pyexec_SCRIPTS += python/libvserver.py python__libvserver_la_SOURCES = python/_libvserver.c Index: src/testsuite/hashcalc-plain.c =================================================================== --- src/testsuite/hashcalc-plain.c (revision 2883) +++ src/testsuite/hashcalc-plain.c (revision 2896) @@ -1,16 +1,16 @@ // $Id$ --*- c -*-- // Copyright (C) 2006 Enrico Scholz -// +// // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; version 2 of the License. -// +// // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -24,6 +24,7 @@ #include #include #include +#include #include #define ENSC_TESTSUITE @@ -36,19 +37,19 @@ { static char const HEX_DIGIT[] = "0123456789abcdef"; size_t d_size = ensc_crypto_hashctx_get_digestsize(h_ctx); - + unsigned char digest[d_size]; size_t out = 0; if (ensc_crypto_hashctx_get_digest(h_ctx, digest, NULL, d_size)==-1) return false; - + for (size_t in=0; in> 4]; res[out++] = HEX_DIGIT[digest[in] & 0x0f]; } res[out++] = '\0'; - + return true; } @@ -81,13 +82,13 @@ assert(ensc_crypto_hashctx_update(&hash_context, buf, buf_size)!=-1); munmap((void *)(buf), buf_size); } - + assert(convertDigest(digest, &hash_context)); - + Vwrite(1, digest, strlen(digest)); Vwrite(1, "\n", 1); - + ensc_crypto_hashctx_free(&hash_context); - + return 0; } Index: src/testsuite/Makefile-files =================================================================== --- src/testsuite/Makefile-files (revision 2883) +++ src/testsuite/Makefile-files (revision 2896) @@ -1,16 +1,16 @@ ## $Id$ --*- makefile -*-- ## Copyright (C) 2003 Enrico Scholz -## +## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; version 2 of the License. -## +## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. -## +## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -57,19 +57,22 @@ src/testsuite/hashcalc-plain.sh \ src/testsuite/vwait-test.sh +DIETPROGS += src/testsuite/vunify-functest \ + src/testsuite/chcontext-test \ + src/testsuite/chbind-test \ + src/testsuite/rpm-fake-test + src_testsuite_rpm_fake_test_SOURCES = src/testsuite/rpm-fake-test.c src_testsuite_vunify_functest_SOURCES = src/testsuite/vunify-functest.c src_testsuite_vunify_functest_LDADD = $(LIBINTERNAL) src_testsuite_vunify_functest_CPPFLAGS= $(AM_CPPFLAGS) $(src_testsuite_CPPFLAGS) - src_testsuite_chcontext_test_SOURCES = src/testsuite/chcontext-test.c -src_testsuite_chcontext_test_LDADD = lib/libvserver.la $(LIBINTERNAL) +src_testsuite_chcontext_test_LDADD = $(VSERVER_LDADDS) $(LIBINTERNAL) - src_testsuite_chbind_test_SOURCES = src/testsuite/chbind-test.c -src_testsuite_chbind_test_LDADD = lib/libvserver.la +src_testsuite_chbind_test_LDADD = $(LIBVSERVER) src_testsuite_hashcalc_SOURCES = src/testsuite/hashcalc.c src_testsuite_hashcalc_plain_SOURCES = src/testsuite/hashcalc-plain.c @@ -77,6 +80,9 @@ src_testsuite_hashcalc_plain_CFLAGS = $(AM_CFLAGS) $(ENSC_CRYPTO_CFLAGS) if ENSC_CAN_CRYPTO_WITH_DIETLIBC +DIETPROGS += src/testsuite/hashcalc \ + src/testsuite/hashcalc-plain + src_testsuite_hashcalc_LDADD = $(LIBINTERNAL) $(LIBENSCVECTOR) $(ENSC_CRYPTO_LIB) $(VSERVER_LDADDS) src_testsuite_hashcalc_LDFLAGS = $(VSERVER_LDFLGS) Index: src/vcontext.c =================================================================== --- src/vcontext.c (revision 2883) +++ src/vcontext.c (revision 2896) @@ -1,16 +1,16 @@ // $Id$ --*- c -*-- // Copyright (C) 2004-2006 Enrico Scholz -// +// // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; version 2 of the License. -// +// // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -21,6 +21,7 @@ #endif #include "util.h" +#include "compat-pivot_root.h" #include "lib/internal.h" #include "lib_internal/jail.h" #include "lib_internal/sys_personality.h" @@ -99,9 +100,9 @@ { "personality-flags", required_argument, 0, CMD_PERSFLAG }, { "vlogin", no_argument, 0, CMD_VLOGIN }, { "pivot-root", no_argument, 0, CMD_PIVOT_ROOT }, -#if 1 +#if 1 { "fakeinit", no_argument, 0, CMD_INITPID }, // compatibility -#endif +#endif { 0,0,0,0 }, }; @@ -205,7 +206,7 @@ { int fd; struct sockaddr_un addr; - + if (filename==0) return -1; ENSC_INIT_UNIX_SOCK(addr, filename); @@ -237,7 +238,7 @@ doExternalSync(int fd, char const *msg) { char c; - + if (fd==-1) return; if (msg) EsendAll(fd, msg, strlen(msg)); @@ -256,13 +257,13 @@ { int p[2][2]; pid_t pid = initSync(p, args->do_disconnect); - + if (pid==0) { xid_t xid; int ext_sync_fd = connectExternalSync(args->sync_sock); - doSyncStage0(p, args->do_disconnect); - + doSyncStage0(p, args->do_disconnect); + if (args->do_create) { xid = vc_ctx_create(args->xid, NULL); if (xid==VC_NOCTX) { @@ -378,7 +379,7 @@ } assert(args->do_disconnect); - + waitOnSync(pid, p, args->xid!=VC_DYNAMIC_XID && args->do_migrate); return EXIT_SUCCESS; } @@ -430,11 +431,11 @@ .personality_flags = 0, .sync_msg = "ok", }; - + while (1) { int c = getopt_long(argc, argv, "+", CMDLINE_OPTIONS, 0); if (c==-1) break; - + switch (c) { case CMD_HELP : showHelp(1, argv[0], 0); case CMD_VERSION : showVersion(); @@ -474,10 +475,10 @@ } signal(SIGCHLD, SIG_DFL); - + if (args.do_migrateself) args.xid = Evc_get_task_xid(0); - + if (!args.do_create && !args.do_migrate) WRITE_MSG(2, "Neither '--create' nor '--migrate' specified; try '--help' for more information\n"); else if (args.do_create && args.do_migrate) Index: scripts/vserver.suexec =================================================================== --- scripts/vserver.suexec (revision 2883) +++ scripts/vserver.suexec (revision 2896) @@ -40,7 +40,7 @@ "${CHBIND_CMD[@]}" \ $_EXEC_ULIMIT "$VSERVER_DIR/ulimits" \ ${USE_VNAMESPACE:+$_VNAMESPACE --enter "$S_CONTEXT" -- } \ - $_VSPACE --enter "$S_CONTEXT" "${OPTS_VSPACE[@]}" -- \ + $_VSPACE --enter "$S_CONTEXT" "${OPTS_VSPACE[@]}" "${OPTS_VSPACE_SHARED[@]}" -- \ $_VTAG --migrate "${OPTS_VTAG_ENTER[@]}" --silent -- \ $_VCONTEXT $SILENT_OPT --migrate $OPT_VCONTEXT_CHROOT \ --xid "$S_CONTEXT" --uid "$user" "${OPTS_VCONTEXT_ENTER[@]}" -- \ Index: scripts/vserver.stop =================================================================== --- scripts/vserver.stop (revision 2883) +++ scripts/vserver.stop (revision 2896) @@ -83,7 +83,7 @@ "${IONICE_CMD[@]}" \ "${NICE_CMD[@]}" \ "${CHBIND_CMD[@]}" \ - "$_VSPACE" --enter "$S_CONTEXT" "${OPTS_VSPACE[@]}" -- \ + "$_VSPACE" --enter "$S_CONTEXT" "${OPTS_VSPACE[@]}" "${OPTS_VSPACE_SHARED[@]}" -- \ "$_VTAG" --migrate "${OPTS_VTAG_ENTER[@]}" --silent -- \ $_VCONTEXT $SILENT_OPT --migrate $OPT_VCONTEXT_CHROOT --xid "$S_CONTEXT" -- \ "${INITCMD_STOP[@]}" || fail=1 Index: scripts/vserver.start =================================================================== --- scripts/vserver.start (revision 2883) +++ scripts/vserver.start (revision 2896) @@ -136,6 +136,7 @@ if $_VSERVER_INFO - FEATURE migrate; then ${IONICE_CMD[@]} \ ${NICE_CMD[@]} \ + "${VSPACE_SHARED_CMD[@]}" \ "${CHBIND_CMD[@]}" \ $_EXEC_ULIMIT "$VSERVER_DIR"/ulimits \ $_VTAG --create "${OPTS_VTAG_CREATE[@]}" --silent -- \ @@ -143,7 +144,7 @@ $_VCONTEXT --create "${OPTS_VCONTEXT_CREATE[@]}" -- \ ${OPTION_STRACE:+$_STRACE -fF -o /tmp/vserver-start.$$} \ ${USE_VNAMESPACE:+$_VNAMESPACE --set -- } \ - $_VSPACE --set "${OPTS_VSPACE[@]}" -- \ + $_VSPACE --set "${OPTS_VSPACE[@]}" "${OPTS_VSPACE_SHARED[@]}" -- \ $_EXEC_REMOUNT /proc /sys -- \ $_VLIMIT --dir "$VSERVER_DIR"/rlimits --missingok -- \ $_VSCHED --xid self --force "${OPTS_VSCHED[@]}" -- \ Index: scripts/vserver.functions =================================================================== --- scripts/vserver.functions (revision 2883) +++ scripts/vserver.functions (revision 2896) @@ -49,6 +49,8 @@ declare -a OPTS_VTAG_ENTER=() declare -a OPTS_VMEMCTRL=() declare -a OPTS_VSPACE=( --default ) +declare -a OPTS_VSPACE_SHARED=() +declare -a VSPACE_SHARED_CMD=() declare -a STOPCMD_PREPARE=() @@ -787,16 +789,30 @@ { local vdir="$1" local d="$vdir"/spaces + local shared - ( test ! -e "$d"/pid ) || \ - OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --pid ) + 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 - test ! -e "$d"/net || { - OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --net ) + 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 -- ) + fi + fi local mask getFileValue mask "$d"/mask || \ Index: configure.ac =================================================================== --- configure.ac (revision 2883) +++ configure.ac (revision 2896) @@ -1,27 +1,27 @@ dnl $Id$ dnl Copyright (C) 2003,2004 Enrico Scholz -dnl +dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2, or (at your option) dnl any later version. -dnl +dnl dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the dnl GNU General Public License for more details. -dnl +dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -dnl -dnl +dnl +dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a configuration dnl script generated by Autoconf, you may include it under the same dnl distribution terms that you use for the rest of that program. -dnl +dnl AC_PREREQ(2.57) AC_INIT(util-vserver, 0.30.215, vserver@list.linux-vserver.org) @@ -78,7 +78,7 @@ if test x"$prefix" = x/; then prefix= -fi +fi ENSC_CHECK_CC_FLAG([-std=c99 -Wall -pedantic -W]) ENSC_CHECK_CXX_FLAG([-ansi -Wall -pedantic -W -fmessage-length=0]) @@ -206,8 +206,8 @@ [AC_HELP_STRING([--disable-internal-headers], [use vserver specific headers from the kernel instead of the shipped versions (default: no)])], [case "$enableval" in - (yes|no) ;; - (*) AC_MSG_ERROR(['$i' is not a supported value for '--disable-internal-headers']);; + (yes|no) ;; + (*) AC_MSG_ERROR(['$i' is not a supported value for '--disable-internal-headers']);; esac], [enable_internal_headers=yes]) @@ -258,14 +258,14 @@ enable_api_oldproc=${enable_api_oldproc:-1} enable_api_olduts=${enable_api_olduts:-1} ;; - (v11) AC_DEFINE(VC_ENABLE_API_V11, 1) + (v11) AC_DEFINE(VC_ENABLE_API_V11, 1) enable_api_oldproc=${enable_api_oldproc:-1} enable_api_olduts=${enable_api_olduts:-1} ;; (fscompat) AC_DEFINE(VC_ENABLE_API_FSCOMPAT, 1);; (v13obs) AC_DEFINE(VC_ENABLE_API_V13OBS, 1) AC_DEFINE(VC_ENABLE_API_V13, 1);; - (v13) AC_DEFINE(VC_ENABLE_API_V13, 1);; + (v13) AC_DEFINE(VC_ENABLE_API_V13, 1);; (net) AC_DEFINE(VC_ENABLE_API_NET, 1);; (v21) AC_DEFINE(VC_ENABLE_API_V21, 1);; (v22) AC_DEFINE(VC_ENABLE_API_V22, 1);; @@ -340,7 +340,7 @@ AC_CHECK_HEADER([beecrypt/beecrypt.h], [ : ], [ ensc_have_beecrypt=no ]) fi - + if test x"$ensc_have_beecrypt" = xyes; then AC_CHECK_LIB(beecrypt, hashFunctionContextInit, [ : ], [ ensc_have_beecrypt=no ]) @@ -532,7 +532,7 @@ crypto api: $ensc_crypto_api python bindings: $ensc_have_python use library versioning: $ensc_have_versioning - + Paths: prefix: $prefix sysconf-Directory: $sysconfdir Index: lib/syscall_setiattr-fscompat.hc =================================================================== --- lib/syscall_setiattr-fscompat.hc (revision 2883) +++ lib/syscall_setiattr-fscompat.hc (revision 2896) @@ -1,16 +1,16 @@ // $Id$ --*- c -*-- // Copyright (C) 2004 Enrico Scholz -// +// // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; version 2 of the License. -// +// // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -26,6 +26,7 @@ #include "ioctl-getxflg.hc" #include +#include static inline ALWAYSINLINE int vc_set_iattr_fscompat(char const *filename, @@ -38,7 +39,7 @@ fd = open(filename, O_RDONLY|O_NONBLOCK); if (fd==-1) return -1; - + stat_rc = fstat(fd, &st); if (stat_rc==-1) goto err; @@ -60,7 +61,7 @@ if (vc_X_set_ext2flags(fd, 0, VC_IMMUTABLE_LINK_FL)==-1 || fchmod(fd, 0500)) goto err; - } + } } if ( (mask&VC_IATTR_XID) && Index: lib/syscall_getiattr-fscompat.hc =================================================================== --- lib/syscall_getiattr-fscompat.hc (revision 2883) +++ lib/syscall_getiattr-fscompat.hc (revision 2896) @@ -1,16 +1,16 @@ // $Id$ --*- c -*-- // Copyright (C) 2004 Enrico Scholz -// +// // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; version 2 of the License. -// +// // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -25,6 +25,9 @@ #include "ioctl-getxflg.hc" #include +#include +#include + static inline ALWAYSINLINE int vc_get_iattr_fscompat(char const *filename, xid_t * /*@null@*/ xid, @@ -65,7 +68,7 @@ if ( (old_mask&VC_IATTR_BARRIER) && S_ISDIR(st.st_mode)) { long ext2_flags; - + *mask |= VC_IATTR_BARRIER; if ((st.st_mode&0777)==0 && vc_X_get_ext2flags(fd, &ext2_flags)!=-1 && @@ -91,5 +94,5 @@ close(fd); errno = old_errno; return -1; - } + } } Index: lib_internal/matchlist-initrefserverlist.c =================================================================== --- lib_internal/matchlist-initrefserverlist.c (revision 2883) +++ lib_internal/matchlist-initrefserverlist.c (revision 2896) @@ -1,16 +1,16 @@ // $Id$ --*- c -*-- // Copyright (C) 2004 Enrico Scholz -// +// // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; version 2 of the License. -// +// // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -26,6 +26,7 @@ #include #include #include +#include #define ENSC_WRAPPERS_FCNTL 1 #define ENSC_WRAPPERS_UNISTD 1 @@ -45,7 +46,7 @@ int cur_dir = Eopen(".", O_RDONLY, 0); struct dirent **entries; int count,i; - + Echdir(dir); count = scandir(".", &entries, selectRefserver, alphasort); if (count==-1) { @@ -61,7 +62,7 @@ *lst = Emalloc(sizeof(struct MatchList) * count); *cnt = count; for (i=0; id_name; + char const *tmp = entries[i]->d_name; size_t l = strlen(tmp); char vname[sizeof("./") + l]; struct MatchVserverInfo vserver = { @@ -71,7 +72,7 @@ memcpy(vname, "./", 2); memcpy(vname+2, tmp, l+1); - + if (!MatchVserverInfo_init(&vserver)) { WRITE_MSG(2, "failed to initialize unification of reference vserver\n"); exit(1); Index: ensc_vector/testsuite/Makefile-files =================================================================== --- ensc_vector/testsuite/Makefile-files (revision 2883) +++ ensc_vector/testsuite/Makefile-files (revision 2896) @@ -1,16 +1,16 @@ ## $Id$ --*- makefile -*-- ## Copyright (C) 2004 Enrico Scholz -## +## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; version 2 of the License. -## +## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. -## +## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -21,6 +21,9 @@ TESTS += ensc_vector/testsuite/test1 \ ensc_vector/testsuite/test2 +DIETPROGS += ensc_vector/testsuite/test1 \ + ensc_vector/testsuite/test2 + ensc_vector_testsuite_test1_SOURCES = ensc_vector/testsuite/test1.c ensc_vector_testsuite_test1_LDADD = $(LIBENSCVECTOR)