From: Daniel Hokka Zakrisson Date: Wed, 26 Mar 2008 23:23:15 +0000 (+0000) Subject: util-vserver 0.30.215. X-Git-Tag: util-vserver-0.30.215~1 X-Git-Url: http://git.onelab.eu/?p=util-vserver.git;a=commitdiff_plain;h=b7785f953cf988346d0f36c5852af39db3d1b00c util-vserver 0.30.215. --- diff --git a/ChangeLog b/ChangeLog index 89dd3df..ec812cb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,544 @@ +2008-03-17 08:59 Daniel Hokka Zakrisson + + * NEWS, configure.ac: Version 0.30.215. + +2008-03-17 08:55 Daniel Hokka Zakrisson + + * lib/ncaps-net.c, lib/nflags-net.c, lib/vserver.h: Add the new + flags. + +2008-03-16 03:30 Daniel Hokka Zakrisson + + * scripts/vserver-build.functions, scripts/vserver.stop: Fix + vserver ... stop --rescue-init. + Use it in stopSleepingGuest, to prevent races and to do proper + cleanup. + If vserver ... stop has already been invoked, remove SC_HELPER + from the context. + +2008-03-15 16:05 Daniel Hokka Zakrisson + + * src/vdevmap.c: Add some examples. + Disallow combinations that make no sense. + Allow defaults to be set. + +2008-03-11 10:07 Benedikt Böhm + + * distrib/gentoo/initpost, scripts/vserver.functions: fix openrc + startup; only fix inittab in plain initstyle + +2008-03-10 22:41 Daniel Hokka Zakrisson + + * scripts/vserver-build.functions: bash doesn't execute traps until + after the current job has finished executing, so run sleep in a + loop. + +2008-03-10 19:59 Daniel Hokka Zakrisson + + * lib/syscall_netremove-netv2.hc: A kernel without IPv6-support + will return ENOSYS for vc_net_remove_ipv6. + +2008-03-05 15:46 Benedikt Böhm + + * distrib/gentoo/initpost: add openrc support to gentoo/initpost + +2008-03-02 14:04 Daniel Hokka Zakrisson + + * scripts/vserver-build.functions: Workaround kernel oddities. + +2008-03-01 01:24 Daniel Hokka Zakrisson + + * src/Makefile-files: Include attribute-util.h in the tarball. + +2008-03-01 01:20 Daniel Hokka Zakrisson + + * src/lockfile.c: lockf(F_LOCK) requests a write lock, which + requires the file to be open in write mode. + +2008-03-01 01:15 Daniel Hokka Zakrisson + + * src/vattribute.c: Remove unused variable. + +2008-03-01 01:07 Daniel Hokka Zakrisson + + * src/attribute-util.h, src/nattribute.c, src/vattribute.c: Factor + out bitfield-to-string code to src/attribute-util.h. + Add --get for nattribute too. + +2008-03-01 00:26 Daniel Hokka Zakrisson + + * src/rpm-fake.c, src/vnamespace.c, src/vspace.c: Revert commit + 2690, clone is needed for pid namespaces and on kernels <2.6.16. + +2008-03-01 00:22 Daniel Hokka Zakrisson + + * doc/configuration.xml, scripts/util-vserver-vars.pathsubst, + scripts/vserver.functions, scripts/vserver.stop, src/tunctl.c: + Add basic support for creating tun/tap interfaces in the + configuration. + +2008-02-29 22:16 Enrico Scholz + + * scripts/vserver.stop: use ! instead of ~ to avoid shell expansion + +2008-02-29 13:29 Enrico Scholz + + * src/rpm-fake.c, src/vnamespace.c, src/vspace.c: use + unshare(CLONE_NEWNS) instead of a complicated 'clone(NEWNS) ... + waitpid()' operation + +2008-02-29 13:27 Enrico Scholz + + * build-all: use hostspecific Build directory + +2008-02-28 23:54 Daniel Hokka Zakrisson + + * src/tunctl.c: Set persist last, this way, no interface is left + behind if one of the ioctls fail. + +2008-02-28 23:28 Daniel Hokka Zakrisson + + * contrib/manifest.dat.pathsubst, ensc_wrappers/wrappers-ioctl.hc, + src/Makefile-files, src/tunctl.c: Add tunctl. + +2008-02-28 23:12 Daniel Hokka Zakrisson + + * src/vrsetup.c: Avoid pointer/integer conversion warning on LP64. + +2008-02-21 23:22 Enrico Scholz + + * NEWS, configure.ac, lib_internal/Makefile-files, + lib_internal/crypto-wrapper-beecrypt.h, + lib_internal/crypto-wrapper-nss.h, lib_internal/crypto-wrapper.h, + lib_internal/testsuite/Makefile-files, + lib_internal/testsuite/SPEED-RESULTS.txt, + lib_internal/testsuite/crypto-speed.c, + lib_internal/testsuite/crypto.c, src/Makefile-files, + src/testsuite/Makefile-files, src/testsuite/hashcalc-plain.c, + src/testsuite/hashcalc.c, src/testsuite/hashcalc.sh, + src/vhashify-init.hc, src/vhashify.c: added support for using + libnss instead of beecrypt for vhashify's + hash calculation. libnss has bad SHA1 performance on i386, but is + a) + maintained and b) gives better performance with all other hashes + and + on x86_64. + + I am just waiting for somebody to write the OpenSSL layer so that + I + can try the padlock hardware crypto device on my C7 ;) + +2008-02-21 23:11 Enrico Scholz + + * scripts/Makefile-files: added h2ext-worker to OPTIONS_PREEMPT + list + +2008-02-21 23:11 Enrico Scholz + + * build-all: fixed CPPFLAGS quoting problems introduced by last + commit + +2008-02-21 23:10 Enrico Scholz + + * scripts/vmount: fixed endless loop when no '--' is given + fixed --help/--version handling + +2008-02-21 22:34 Enrico Scholz + + * build-all: added code to enable i386 builds on x86_64 platforms + added $CONFIGURE_FLAGS configuration env + set LDFLAGS + +2008-02-21 22:33 Enrico Scholz + + * lib_internal/testsuite/matchlist.c: fixed unused param + + unsigned/signed mismatch warning + +2008-02-21 22:32 Enrico Scholz + + * src/vspace.c: fixed + + | src/vspace.c:177: warning: passing argument 2 of + 'isNumberUnsigned' from incompatible pointer type + + warning + +2008-02-16 22:09 Daniel Hokka Zakrisson + + * lib_internal/util-lockfile.c, src/lockfile.c, src/secure-mount.c, + vserver-start/main.c: Use lockf instead of flock, the former + works on NFS. + +2008-02-14 19:28 Daniel Hokka Zakrisson + + * src/rpm-fake.c: Disable VXF_SC_HELPER for rpm-fake created + contexts. + +2008-02-11 23:41 Daniel Hokka Zakrisson + + * scripts/vserver-build.functions: Set the barrier and warn if it + could not be set automatically. + +2008-02-09 00:27 Daniel Hokka Zakrisson + + * src/rpm-fake.c: We only want to wait on the context if we created + it. + +2008-01-27 07:55 Daniel Hokka Zakrisson + + * distrib/alpine/initpost, distrib/alpine/initpre, + distrib/debian/initpost, distrib/gentoo/init-vserver.sh, + distrib/gentoo/initpost, distrib/gentoo/initpre, + distrib/gentoo/net.vserver, distrib/gentoo/reboot.sh, + distrib/gentoo/shutdown.sh, distrib/misc/environment, + distrib/misc/h2ext.desc, gentoo/Makefile-files, + gentoo/bash-wrapper, gentoo/util-vserver, gentoo/vprocunhide, + gentoo/vservers.default, lib/syscall_ctxcreate-v21.hc, + lib/syscall_fgetiattr-v22.hc, lib/syscall_fgetiattr.c, + lib/syscall_fsetiattr-v22.hc, lib/syscall_fsetiattr.c, + lib/syscall_getbadness-v23.hc, lib/syscall_getbadness.c, + lib/syscall_getccaps-v21.hc, lib/syscall_getsched-v21.hc, + lib/syscall_getsched.c, lib/syscall_netadd-netv2.hc, + lib/syscall_netremove-netv2.hc, lib/syscall_setbadness-v23.hc, + lib/syscall_setbadness.c, lib/syscall_setsched-v22.hc, + lib/syscall_tagcreate.c, lib/syscall_tagmigrate-v23.hc, + lib/syscall_tagmigrate.c, lib/syscall_tasktag-v23.hc, + lib/syscall_tasktag.c, lib/syscall_unsetmapping-v21.hc, + lib/syscall_unsetmapping.c, lib/tagopt2tag.c, + lib_internal/mkdir.c, lib_internal/sys_unshare.h, + lib_internal/testsuite/matchlist.c, + man/vserver-build.8.pathsubst, mkrelease, scripts/h2ext-worker, + scripts/vserver-build.fai, src/h2ext.c, src/vmemctrl.c, + src/vspace.c, src/vtag.c: Add missing svn:keywords. + +2008-01-26 11:44 Daniel Hokka Zakrisson + + * scripts/vserver-build.functions: Make sure /dev gets proper + permissions. + +2008-01-26 11:44 Daniel Hokka Zakrisson + + * scripts/vserver-build.functions: Prevent deadlock between + sc_helper vserver ... stop invocation, and stopSleepingGuest. + +2008-01-23 10:38 Daniel Hokka Zakrisson + + * lib_internal/sys_unshare.h: Use the correct syscall number. + +2008-01-23 06:14 Daniel Hokka Zakrisson + + * distrib/Makefile.am: Fedora 8 is redhat-style too. + +2008-01-22 09:19 Daniel Hokka Zakrisson + + * scripts/vserver.stop, scripts/vserver.suexec, src/vspace.c: Fix + vspace stuff. + +2008-01-21 14:13 Daniel Hokka Zakrisson + + * src/naddress.c: Don't require a netmask/prefix. + +2008-01-20 08:15 Daniel Hokka Zakrisson + + * contrib/manifest.dat.pathsubst: Add missing files. + +2008-01-20 08:03 Daniel Hokka Zakrisson + + * doc/configuration.xml: Add missing closing tag. + +2008-01-20 08:01 Daniel Hokka Zakrisson + + * src/rpm-fake.c: Hopefully this will make it bullet-proof. + +2008-01-20 07:56 Daniel Hokka Zakrisson + + * doc/configuration.xml, scripts/vserver.functions, + scripts/vserver.start, scripts/vserver.stop, + scripts/vserver.suexec, src/vspace.c: Add preliminary support for + pid and network namespaces. + +2008-01-20 06:58 Daniel Hokka Zakrisson + + * sysv/util-vserver: getPhysicalDir doesn't work if it doesn't + already exist. + +2008-01-15 13:26 Daniel Hokka Zakrisson + + * distrib/misc/debootstrap.uri: debootstrap 1.0.8. + +2008-01-13 18:26 Daniel Hokka Zakrisson + + * scripts/vserver: Use $cmd instead of $2. + +2008-01-13 18:26 Daniel Hokka Zakrisson + + * lib/syscall_tagmigrate-v23.hc: Only migrate to the tag once. + +2008-01-12 15:55 Daniel Hokka Zakrisson + + * lib/vserver.h, src/vspace.c: Add support for PID and net + namespaces. + +2008-01-12 15:48 Daniel Hokka Zakrisson + + * src/vspace.c: Pid namespaces require clone. + +2008-01-12 15:35 Daniel Hokka Zakrisson + + * ., lib, lib_internal: Fix svn:ignores. + +2008-01-08 17:19 Daniel Hokka Zakrisson + + * scripts/vserver.functions: Backslash... + +2008-01-08 16:53 Daniel Hokka Zakrisson + + * src/rpm-fake.c: Attempt to close race between dying + rpm-fake-resolver and other rpm-fake processes. + +2008-01-08 16:49 Daniel Hokka Zakrisson + + * scripts/vserver.delete: cache need not exist. + +2008-01-06 01:40 Daniel Hokka Zakrisson + + * scripts/vmount: Work with nonamespace guests. + +2008-01-04 17:42 Daniel Hokka Zakrisson + + * src/vattribute.c: Add --get. + +2008-01-03 15:33 Daniel Hokka Zakrisson + + * lib/val2text.hc: Don't remove bits for which there were no match. + Cast 1 to the TYPE, so uint64 values can be looked up. + +2008-01-03 15:30 Daniel Hokka Zakrisson + + * lib_internal/util-io.h, src/h2ext.c: Move WRITE_INT to util-io.h, + so other programs can use it too. + +2008-01-03 14:18 Daniel Hokka Zakrisson + + * scripts/vmount: Make vmount -- -a work. + +2008-01-03 00:40 Daniel Hokka Zakrisson + + * lib/vserver.h: Fix typo. + +2007-12-22 16:30 Daniel Hokka Zakrisson + + * distrib/redhat/initpost: Leave rsyslog enabled for Fedora 8. + +2007-12-20 00:09 Daniel Hokka Zakrisson + + * src/vclone.c: Don't bail on EINVAL, since the clone build method + sets the contexts unconditionally. + +2007-12-19 19:13 Daniel Hokka Zakrisson + + * distrib/debian/initpost: Remove all unknown services. + +2007-12-19 14:28 Daniel Hokka Zakrisson + + * scripts/vserver-build, scripts/vserver-build.clone: Use/support + the "new" vclone features in the clone build method. + +2007-12-19 02:17 Daniel Hokka Zakrisson + + * lib/ccaps-v13.c, lib/vserver.h: Add VXC_KTHREAD. + +2007-12-05 14:24 Daniel Hokka Zakrisson + + * lib/syscall_tagmigrate-v23.hc: Use TAG_KERNEL2USER on the result. + +2007-12-05 00:51 Daniel Hokka Zakrisson + + * scripts/vserver-build.debootstrap: Work with newer versions of + debootstrap too. + +2007-12-03 21:08 Daniel Hokka Zakrisson + + * distrib/f7/yum.repos.d/fedora.repo: Correct path to keys. + +2007-12-03 18:06 Daniel Hokka Zakrisson + + * scripts/vserver: Document --debug. + +2007-11-30 23:18 Daniel Hokka Zakrisson + + * distrib/misc/h2ext.desc: Use --numeric-owner for tar and + --numeric-uid-gid for cpio. + +2007-11-26 23:47 Daniel Hokka Zakrisson + + * src/vsched.c: Floats are numbers too. + +2007-11-19 04:48 Daniel Hokka Zakrisson + + * distrib/Makefile.am, distrib/f8, + distrib/f8/yum.repos.d/fedora-development.repo, + distrib/f8/yum.repos.d/fedora-updates-testing.repo, + distrib/f8/yum.repos.d/fedora-updates.repo, + distrib/f8/yum.repos.d/fedora.repo: Add Fedora 8. + +2007-11-17 23:52 Benedikt Böhm + + * scripts/vdispatch-conf, scripts/vemerge, scripts/vesync, + scripts/vupdateworld: fix a corner case in gentoo helpers + +2007-11-17 21:36 Benedikt Böhm + + * scripts/vserver.functions: use sane PATH during shutdown + +2007-11-13 22:17 Daniel Hokka Zakrisson + + * distrib/misc/debootstrap.uri: Update to 1.0.6. + +2007-10-29 21:13 Daniel Hokka Zakrisson + + * scripts/Makefile-files, scripts/vmount: Add vmount, a wrapper to + mount something in a guest. + +2007-10-27 19:34 Daniel Hokka Zakrisson + + * contrib/manifest.dat.pathsubst, man/Makefile-files, + man/vserver-build.8.pathsubst, man/vserver.8: Man pages update + from Micah Anderson. + +2007-10-25 01:18 Daniel Hokka Zakrisson + + * distrib/Makefile.am, distrib/alpine, distrib/alpine/initpost, + distrib/alpine/initpre: Add "Alpine Linux". + +2007-10-25 00:26 Daniel Hokka Zakrisson + + * scripts/vserver: Cleanup the help message. + +2007-10-25 00:23 Daniel Hokka Zakrisson + + * distrib/debian/initpost, distrib/redhat/initpost, + scripts/vserver, scripts/vserver-build.functions, + scripts/vserver.stop: Create helper functions to start a guest + that just sleeps and kills. + +2007-10-22 20:43 Daniel Hokka Zakrisson + + * src/vmemctrl.c: Fix startup bug on older kernels. + +2007-10-16 00:27 Daniel Hokka Zakrisson + + * configure.ac, scripts/util-vserver-vars.pathsubst, + scripts/vserver.functions, scripts/vserver.start, + util-vserver.spec.in: Lots of small fixes to make everything + behave like it should. + +2007-10-15 11:38 Daniel Hokka Zakrisson + + * contrib/manifest.dat.pathsubst: Add vmemctrl and vspace to the + manifest. + +2007-10-15 11:31 Daniel Hokka Zakrisson + + * doc/configuration.xml, gentoo/util-vserver, + scripts/vserver.functions, scripts/vserver.start, + scripts/vserver.stop, sysv/util-vserver: Add support for + per-guest device maps. + +2007-10-14 14:40 Daniel Hokka Zakrisson + + * doc/configuration.xml: Improve the disk limit descriptions. + +2007-10-14 00:32 Daniel Hokka Zakrisson + + * distrib/misc/vprocunhide-files: Hide conntrack files. + +2007-10-13 14:17 Daniel Hokka Zakrisson + + * doc/configuration.xml, scripts/vserver.functions, + scripts/vserver.start: Add support for the OOM bias in the + configuration. + +2007-10-13 12:13 Daniel Hokka Zakrisson + + * kernel/context_cmd.h, kernel/switch.h, lib/Makefile-files, + lib/syscall_getbadness-v23.hc, lib/syscall_getbadness.c, + lib/syscall_setbadness-v23.hc, lib/syscall_setbadness.c, + lib/vserver.h, src, src/Makefile-files, src/vmemctrl.c: Add + support for the OOM bias, and vmemctrl to control it. + +2007-10-13 01:10 Daniel Hokka Zakrisson + + * lib/vserver.h, src, src/Makefile-files, src/vspace.c: Added + vspace, like vnamespace but generic. + +2007-10-12 00:03 Daniel Hokka Zakrisson + + * scripts/vserver.functions, scripts/vserver.start: Run fsck on + filesystems in the guest's fstab. + +2007-10-11 23:47 Daniel Hokka Zakrisson + + * lib/vserver.h, src/naddress.c: Ranges might want masks too. + +2007-10-11 20:37 Daniel Hokka Zakrisson + + * kernel/device_cmd.h, lib/Makefile-files, + lib/syscall_unsetmapping-v21.hc, lib/syscall_unsetmapping.c, + lib/vserver.h, scripts/vserver.functions, src/vdevmap.c: Add + support for vc_unset_mapping introduced in 2.3.0.27. + +2007-10-10 09:01 Daniel Hokka Zakrisson + + * doc/configuration.xml: Clarify which entries are required for + cpusets. + +2007-10-06 17:23 Daniel Hokka Zakrisson + + * scripts/vserver.functions: People love symlinks. + +2007-09-11 21:26 Enrico Scholz + + * distrib/f7/yum/yum.conf, scripts/vserver-build.functions.yum: + added support for yum's new persistdir option + +2007-09-11 21:22 Enrico Scholz + + * contrib/yum-3.2.4-chroot.patch: fixed patch and re-added lost + hunk which caused broken paths for cachedir, logfile and friends + +2007-09-06 17:48 Daniel Hokka Zakrisson + + * scripts/vserver.functions, src/vtag.c: Unbreak dynamic contexts. + +2007-09-06 07:53 Enrico Scholz + + * contrib/Makefile-files, contrib/yum-3.2.4-chroot.patch: added + patch for yum-3.2.4 + +2007-09-03 07:42 Enrico Scholz + + * lib_internal/matchlist-appendfiles.c, + lib_internal/matchlist-initmanually.c, lib_internal/matchlist.h, + lib_internal/util-safechdir.h: whitespace-cleanup + +2007-09-03 07:40 Enrico Scholz + + * lib_internal/matchlist-appendfiles.c, + lib_internal/matchlist-initmanually.c, lib_internal/matchlist.h: + fixed const-ness of matchlist functions + + made the initial file-list a 'char const **' to ease + initialization from string constants + +2007-09-03 07:38 Enrico Scholz + + * lib_internal/util-safechdir.h: fixed declaration of 'struct stat' + + include instead of declaring it with 'struct stat' + as it might cause conflicts when 'stat' is #defined as stat64 + in this header + 2007-09-02 20:03 Daniel Hokka Zakrisson * NEWS, configure.ac: Version 0.30.214. diff --git a/Makefile.in b/Makefile.in index eace06d..febb25e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -63,8 +63,9 @@ pkglib_PROGRAMS = src/capchroot$(EXEEXT) src/chain-echo$(EXEEXT) \ src/mask2prefix$(EXEEXT) src/exec-ulimit$(EXEEXT) \ src/rpm-fake-resolver$(EXEEXT) src/vshelper-sync$(EXEEXT) \ src/sigexec$(EXEEXT) src/chbind-compat$(EXEEXT) \ - src/vsysctl$(EXEEXT) src/h2ext$(EXEEXT) $(am__EXEEXT_8) \ - $(am__EXEEXT_9) $(am__EXEEXT_10) $(am__EXEEXT_11) + src/vsysctl$(EXEEXT) src/h2ext$(EXEEXT) src/tunctl$(EXEEXT) \ + $(am__EXEEXT_9) $(am__EXEEXT_10) $(am__EXEEXT_11) \ + $(am__EXEEXT_12) legacy_PROGRAMS = src/ifspec$(EXEEXT) src/listdevip$(EXEEXT) \ src/parserpmdump$(EXEEXT) src/rebootmgr$(EXEEXT) \ src/showperm$(EXEEXT) src/vreboot$(EXEEXT) @@ -77,24 +78,26 @@ sbin_PROGRAMS = src/exec-cd$(EXEEXT) src/lsxid$(EXEEXT) \ src/vserver-stat$(EXEEXT) src/vserver-info$(EXEEXT) \ src/vuname$(EXEEXT) src/vwait$(EXEEXT) src/ncontext$(EXEEXT) \ src/nattribute$(EXEEXT) src/naddress$(EXEEXT) \ - src/vdevmap$(EXEEXT) src/vtag$(EXEEXT) $(am__EXEEXT_9) \ - $(am__EXEEXT_12) + src/vdevmap$(EXEEXT) src/vtag$(EXEEXT) src/vspace$(EXEEXT) \ + src/vmemctrl$(EXEEXT) $(am__EXEEXT_10) $(am__EXEEXT_13) noinst_PROGRAMS = tests/escaperoot$(EXEEXT) tests/forkbomb$(EXEEXT) \ tests/testipc$(EXEEXT) tests/testlimit$(EXEEXT) \ - tests/testopenf$(EXEEXT) $(am__EXEEXT_6) + tests/testopenf$(EXEEXT) $(am__EXEEXT_7) EXTRA_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_1) check_PROGRAMS = lib/testsuite/cflags$(EXEEXT) \ lib/testsuite/personality$(EXEEXT) lib/testsuite/fmt$(EXEEXT) \ lib/testsuite/parselimit$(EXEEXT) $(am__EXEEXT_3) \ $(am__EXEEXT_4) ensc_vector/testsuite/test1$(EXEEXT) \ ensc_vector/testsuite/test2$(EXEEXT) \ - lib_internal/testsuite/command$(EXEEXT) $(am__EXEEXT_5) + lib_internal/testsuite/command$(EXEEXT) $(am__EXEEXT_5) \ + $(am__EXEEXT_6) TESTS = lib/testsuite/cflags$(EXEEXT) \ lib/testsuite/personality$(EXEEXT) lib/testsuite/fmt$(EXEEXT) \ lib/testsuite/parselimit$(EXEEXT) $(am__EXEEXT_4) \ - $(am__EXEEXT_14) $(am__EXEEXT_1) \ + $(am__EXEEXT_15) $(am__EXEEXT_1) \ ensc_vector/testsuite/test1$(EXEEXT) \ - ensc_vector/testsuite/test2$(EXEEXT) $(am__EXEEXT_15) + ensc_vector/testsuite/test2$(EXEEXT) $(am__EXEEXT_16) \ + $(am__EXEEXT_17) DIST_COMMON = README $(am__configure_deps) $(include_HEADERS) \ $(noinst_HEADERS) $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/config.h.in \ @@ -134,14 +137,14 @@ DIST_COMMON = README $(am__configure_deps) $(include_HEADERS) \ @ENSC_HAVE_C99_COMPILER_TRUE@ lib/syscall_setdlimit.c @USE_DIETLIBC_TRUE@am__append_2 = $(LIBVSERVER_DIET) -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@am__append_3 = src/vhashify -@ENSC_HAVE_BEECRYPT_TRUE@@ENSC_HAVE_C99_COMPILER_TRUE@am__append_4 = src/vhashify +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@am__append_3 = src/vhashify +@ENSC_HAVE_C99_COMPILER_TRUE@@ENSC_HAVE_CRYPTO_TRUE@am__append_4 = src/vhashify @ENSC_HAVE_C99_COMPILER_TRUE@am__append_5 = src/vdlimit -@ENSC_HAVE_BEECRYPT_TRUE@@ENSC_HAVE_C99_COMPILER_TRUE@am__append_6 = src/testsuite/hashcalc \ -@ENSC_HAVE_BEECRYPT_TRUE@@ENSC_HAVE_C99_COMPILER_TRUE@ src/testsuite/hashcalc-plain +@ENSC_HAVE_C99_COMPILER_TRUE@@ENSC_HAVE_CRYPTO_TRUE@am__append_6 = src/testsuite/hashcalc \ +@ENSC_HAVE_C99_COMPILER_TRUE@@ENSC_HAVE_CRYPTO_TRUE@ src/testsuite/hashcalc-plain -@ENSC_HAVE_BEECRYPT_TRUE@@ENSC_HAVE_C99_COMPILER_TRUE@am__append_7 = src/testsuite/hashcalc-plain.sh \ -@ENSC_HAVE_BEECRYPT_TRUE@@ENSC_HAVE_C99_COMPILER_TRUE@ src/testsuite/hashcalc.sh +@ENSC_HAVE_C99_COMPILER_TRUE@@ENSC_HAVE_CRYPTO_TRUE@am__append_7 = src/testsuite/hashcalc-plain.sh \ +@ENSC_HAVE_C99_COMPILER_TRUE@@ENSC_HAVE_CRYPTO_TRUE@ src/testsuite/hashcalc.sh @HAVE_XSLTP_TRUE@am__append_8 = $(doc_gen_DOCS) @HAVE_XSLTPROC_TRUE@@HAVE_XSLTP_FALSE@am__append_9 = $(doc_gen_DOCS) @@ -170,10 +173,17 @@ DIST_COMMON = README $(am__configure_deps) $(include_HEADERS) \ @ENSC_HAVE_C99_COMPILER_TRUE@ lib_internal/testsuite/matchlist \ @ENSC_HAVE_C99_COMPILER_TRUE@ lib_internal/testsuite/matchlist-gnu -@ENSC_HAVE_C99_COMPILER_TRUE@am__append_17 = vserver-start/vserver.start.bin -@ENSC_HAVE_C99_COMPILER_TRUE@am__append_18 = vserver-start/vserver.start.bin -@HAVE_GENTOO_INIT_TRUE@am__append_19 = $(gentoo_src_SCRPTS) -@HAVE_GENTOO_INIT_TRUE@am__append_20 = gentoo/bash-wrapper +@ENSC_HAVE_CRYPTO_TRUE@am__append_17 = lib_internal/testsuite/crypto \ +@ENSC_HAVE_CRYPTO_TRUE@ lib_internal/testsuite/crypto-speed + +@ENSC_HAVE_CRYPTO_TRUE@am__append_18 = lib_internal/testsuite/crypto +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@am__append_19 = lib_internal/testsuite/crypto \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@ lib_internal/testsuite/crypto-speed + +@ENSC_HAVE_C99_COMPILER_TRUE@am__append_20 = vserver-start/vserver.start.bin +@ENSC_HAVE_C99_COMPILER_TRUE@am__append_21 = vserver-start/vserver.start.bin +@HAVE_GENTOO_INIT_TRUE@am__append_22 = $(gentoo_src_SCRPTS) +@HAVE_GENTOO_INIT_TRUE@am__append_23 = gentoo/bash-wrapper subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ensc_cflags.m4 \ @@ -297,6 +307,7 @@ am__lib_libvserver_a_SOURCES_DIST = lib/syscall.c lib/checkversion.c \ lib/syscall_enternamespace-v21.hc \ lib/syscall_setnamespace-v21.hc lib/syscall_ctxmigrate-v21.hc \ lib/syscall_setmapping.c lib/syscall_setmapping-v21.hc \ + lib/syscall_unsetmapping.c lib/syscall_unsetmapping-v21.hc \ lib/syscall_schedinfo.c lib/syscall_schedinfo-v21.hc \ lib/syscall_getccaps-v21.hc lib/syscall_getsched.c \ lib/syscall_getsched-v21.hc lib/syscall_ctxcreate-v21.hc \ @@ -306,6 +317,8 @@ am__lib_libvserver_a_SOURCES_DIST = lib/syscall.c lib/checkversion.c \ lib/syscall_netremove-netv2.hc lib/syscall_tagmigrate-v23.hc \ lib/syscall_tagmigrate.c lib/syscall_tagcreate.c \ lib/syscall_tasktag-v23.hc lib/syscall_tasktag.c \ + lib/syscall_getbadness.c lib/syscall_getbadness-v23.hc \ + lib/syscall_setbadness.c lib/syscall_setbadness-v23.hc \ ensc_fmt/fmt-32.c ensc_fmt/fmt-64.c ensc_fmt/fmtx-32.c \ ensc_fmt/fmtx-64.c ensc_fmt/fmt-tai64n.c ensc_fmt/fmt.h \ ensc_fmt/fmt.hc ensc_fmt/fmtx.hc ensc_fmt/fmt-internal.h @@ -376,6 +389,7 @@ am__objects_7 = lib/lib_libvserver_a-syscall_rlimitstat.$(OBJEXT) \ lib/lib_libvserver_a-syscall_ctxstat.$(OBJEXT) \ lib/lib_libvserver_a-syscall_getspacemask.$(OBJEXT) \ lib/lib_libvserver_a-syscall_setmapping.$(OBJEXT) \ + lib/lib_libvserver_a-syscall_unsetmapping.$(OBJEXT) \ lib/lib_libvserver_a-syscall_schedinfo.$(OBJEXT) \ lib/lib_libvserver_a-syscall_getsched.$(OBJEXT) am__objects_8 = lib/lib_libvserver_a-syscall_fsetiattr.$(OBJEXT) \ @@ -383,7 +397,9 @@ am__objects_8 = lib/lib_libvserver_a-syscall_fsetiattr.$(OBJEXT) \ am__objects_9 = am__objects_10 = lib/lib_libvserver_a-syscall_tagmigrate.$(OBJEXT) \ lib/lib_libvserver_a-syscall_tagcreate.$(OBJEXT) \ - lib/lib_libvserver_a-syscall_tasktag.$(OBJEXT) + lib/lib_libvserver_a-syscall_tasktag.$(OBJEXT) \ + lib/lib_libvserver_a-syscall_getbadness.$(OBJEXT) \ + lib/lib_libvserver_a-syscall_setbadness.$(OBJEXT) am__objects_11 = ensc_fmt/lib_libvserver_a-fmt-32.$(OBJEXT) \ ensc_fmt/lib_libvserver_a-fmt-64.$(OBJEXT) \ ensc_fmt/lib_libvserver_a-fmtx-32.$(OBJEXT) \ @@ -687,6 +703,7 @@ am__lib_libvserver_la_SOURCES_DIST = lib/syscall.c lib/checkversion.c \ lib/syscall_enternamespace-v21.hc \ lib/syscall_setnamespace-v21.hc lib/syscall_ctxmigrate-v21.hc \ lib/syscall_setmapping.c lib/syscall_setmapping-v21.hc \ + lib/syscall_unsetmapping.c lib/syscall_unsetmapping-v21.hc \ lib/syscall_schedinfo.c lib/syscall_schedinfo-v21.hc \ lib/syscall_getccaps-v21.hc lib/syscall_getsched.c \ lib/syscall_getsched-v21.hc lib/syscall_ctxcreate-v21.hc \ @@ -696,6 +713,8 @@ am__lib_libvserver_la_SOURCES_DIST = lib/syscall.c lib/checkversion.c \ lib/syscall_netremove-netv2.hc lib/syscall_tagmigrate-v23.hc \ lib/syscall_tagmigrate.c lib/syscall_tagcreate.c \ lib/syscall_tasktag-v23.hc lib/syscall_tasktag.c \ + lib/syscall_getbadness.c lib/syscall_getbadness-v23.hc \ + lib/syscall_setbadness.c lib/syscall_setbadness-v23.hc \ ensc_fmt/fmt-32.c ensc_fmt/fmt-64.c ensc_fmt/fmtx-32.c \ ensc_fmt/fmtx-64.c ensc_fmt/fmt-tai64n.c ensc_fmt/fmt.h \ ensc_fmt/fmt.hc ensc_fmt/fmtx.hc ensc_fmt/fmt-internal.h @@ -764,13 +783,16 @@ am__objects_27 = lib/lib_libvserver_la-syscall_rlimitstat.lo \ lib/lib_libvserver_la-syscall_ctxstat.lo \ lib/lib_libvserver_la-syscall_getspacemask.lo \ lib/lib_libvserver_la-syscall_setmapping.lo \ + lib/lib_libvserver_la-syscall_unsetmapping.lo \ lib/lib_libvserver_la-syscall_schedinfo.lo \ lib/lib_libvserver_la-syscall_getsched.lo am__objects_28 = lib/lib_libvserver_la-syscall_fsetiattr.lo \ lib/lib_libvserver_la-syscall_fgetiattr.lo am__objects_29 = lib/lib_libvserver_la-syscall_tagmigrate.lo \ lib/lib_libvserver_la-syscall_tagcreate.lo \ - lib/lib_libvserver_la-syscall_tasktag.lo + lib/lib_libvserver_la-syscall_tasktag.lo \ + lib/lib_libvserver_la-syscall_getbadness.lo \ + lib/lib_libvserver_la-syscall_setbadness.lo am__objects_30 = ensc_fmt/lib_libvserver_la-fmt-32.lo \ ensc_fmt/lib_libvserver_la-fmt-64.lo \ ensc_fmt/lib_libvserver_la-fmtx-32.lo \ @@ -817,8 +839,8 @@ src_rpm_fake_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(src_rpm_fake_la_CFLAGS) \ $(CFLAGS) $(src_rpm_fake_la_LDFLAGS) $(LDFLAGS) -o $@ am__EXEEXT_1 = -@ENSC_HAVE_BEECRYPT_TRUE@@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_2 = src/testsuite/hashcalc$(EXEEXT) \ -@ENSC_HAVE_BEECRYPT_TRUE@@ENSC_HAVE_C99_COMPILER_TRUE@ src/testsuite/hashcalc-plain$(EXEEXT) +@ENSC_HAVE_C99_COMPILER_TRUE@@ENSC_HAVE_CRYPTO_TRUE@am__EXEEXT_2 = src/testsuite/hashcalc$(EXEEXT) \ +@ENSC_HAVE_C99_COMPILER_TRUE@@ENSC_HAVE_CRYPTO_TRUE@ src/testsuite/hashcalc-plain$(EXEEXT) am__EXEEXT_3 = src/testsuite/rpm-fake-test$(EXEEXT) $(am__EXEEXT_2) am__EXEEXT_4 = src/testsuite/vunify-functest$(EXEEXT) \ src/testsuite/chcontext-test$(EXEEXT) \ @@ -831,17 +853,20 @@ am__EXEEXT_4 = src/testsuite/vunify-functest$(EXEEXT) \ @ENSC_HAVE_C99_COMPILER_TRUE@ lib_internal/testsuite/sigbus-gnu$(EXEEXT) \ @ENSC_HAVE_C99_COMPILER_TRUE@ lib_internal/testsuite/matchlist$(EXEEXT) \ @ENSC_HAVE_C99_COMPILER_TRUE@ lib_internal/testsuite/matchlist-gnu$(EXEEXT) +@ENSC_HAVE_CRYPTO_TRUE@am__EXEEXT_6 = \ +@ENSC_HAVE_CRYPTO_TRUE@ lib_internal/testsuite/crypto$(EXEEXT) \ +@ENSC_HAVE_CRYPTO_TRUE@ lib_internal/testsuite/crypto-speed$(EXEEXT) legacyPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -am__EXEEXT_6 = tests/getctx$(EXEEXT) tests/getinitpid$(EXEEXT) \ +am__EXEEXT_7 = tests/getctx$(EXEEXT) tests/getinitpid$(EXEEXT) \ tests/vserver-info$(EXEEXT) -am__EXEEXT_7 = src/vunify$(EXEEXT) src/vcopy$(EXEEXT) \ +am__EXEEXT_8 = src/vunify$(EXEEXT) src/vcopy$(EXEEXT) \ src/vclone$(EXEEXT) -@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_8 = $(am__EXEEXT_7) -@ENSC_HAVE_CXX_COMPILER_TRUE@am__EXEEXT_9 = $(am__EXEEXT_1) -@ENSC_HAVE_BEECRYPT_TRUE@@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_10 = src/vhashify$(EXEEXT) -@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_11 = vserver-start/vserver.start.bin$(EXEEXT) +@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_9 = $(am__EXEEXT_8) +@ENSC_HAVE_CXX_COMPILER_TRUE@am__EXEEXT_10 = $(am__EXEEXT_1) +@ENSC_HAVE_C99_COMPILER_TRUE@@ENSC_HAVE_CRYPTO_TRUE@am__EXEEXT_11 = src/vhashify$(EXEEXT) +@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_12 = vserver-start/vserver.start.bin$(EXEEXT) pkglibPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_12 = src/vdlimit$(EXEEXT) +@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_13 = src/vdlimit$(EXEEXT) sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(legacy_PROGRAMS) $(noinst_PROGRAMS) $(pkglib_PROGRAMS) \ $(sbin_PROGRAMS) @@ -897,6 +922,30 @@ am_lib_internal_testsuite_copy_OBJECTS = \ lib_internal_testsuite_copy_OBJECTS = \ $(am_lib_internal_testsuite_copy_OBJECTS) lib_internal_testsuite_copy_DEPENDENCIES = $(LIBINTERNAL_GLIBC) +am__lib_internal_testsuite_crypto_SOURCES_DIST = \ + lib_internal/testsuite/crypto.c +@ENSC_HAVE_CRYPTO_TRUE@am_lib_internal_testsuite_crypto_OBJECTS = lib_internal/testsuite/lib_internal_testsuite_crypto-crypto.$(OBJEXT) +lib_internal_testsuite_crypto_OBJECTS = \ + $(am_lib_internal_testsuite_crypto_OBJECTS) +am__DEPENDENCIES_1 = +@ENSC_HAVE_CRYPTO_TRUE@lib_internal_testsuite_crypto_DEPENDENCIES = \ +@ENSC_HAVE_CRYPTO_TRUE@ $(am__DEPENDENCIES_1) +lib_internal_testsuite_crypto_LINK = $(LIBTOOL) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(lib_internal_testsuite_crypto_CFLAGS) $(CFLAGS) \ + $(lib_internal_testsuite_crypto_LDFLAGS) $(LDFLAGS) -o $@ +am__lib_internal_testsuite_crypto_speed_SOURCES_DIST = \ + lib_internal/testsuite/crypto-speed.c +@ENSC_HAVE_CRYPTO_TRUE@am_lib_internal_testsuite_crypto_speed_OBJECTS = lib_internal/testsuite/lib_internal_testsuite_crypto_speed-crypto-speed.$(OBJEXT) +lib_internal_testsuite_crypto_speed_OBJECTS = \ + $(am_lib_internal_testsuite_crypto_speed_OBJECTS) +@ENSC_HAVE_CRYPTO_TRUE@lib_internal_testsuite_crypto_speed_DEPENDENCIES = \ +@ENSC_HAVE_CRYPTO_TRUE@ $(am__DEPENDENCIES_1) +lib_internal_testsuite_crypto_speed_LINK = $(LIBTOOL) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(lib_internal_testsuite_crypto_speed_CFLAGS) $(CFLAGS) \ + $(lib_internal_testsuite_crypto_speed_LDFLAGS) $(LDFLAGS) -o \ + $@ am_lib_internal_testsuite_filecfg_ml_OBJECTS = \ lib_internal/testsuite/filecfg-ml.$(OBJEXT) lib_internal_testsuite_filecfg_ml_OBJECTS = \ @@ -930,7 +979,6 @@ lib_internal_testsuite_sigbus_gnu_OBJECTS = \ lib_internal_testsuite_sigbus_gnu_LDADD = $(LDADD) am_src_capchroot_OBJECTS = src/capchroot.$(OBJEXT) src_capchroot_OBJECTS = $(am_src_capchroot_OBJECTS) -am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = $(LIBVSERVER) $(am__DEPENDENCIES_1) src_capchroot_DEPENDENCIES = $(am__DEPENDENCIES_2) src_capchroot_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ @@ -1090,35 +1138,40 @@ src_testsuite_chcontext_test_OBJECTS = \ $(am_src_testsuite_chcontext_test_OBJECTS) src_testsuite_chcontext_test_DEPENDENCIES = lib/libvserver.la \ $(LIBINTERNAL) -am_src_testsuite_hashcalc_OBJECTS = src/testsuite/hashcalc.$(OBJEXT) +am_src_testsuite_hashcalc_OBJECTS = \ + src/testsuite/src_testsuite_hashcalc-hashcalc.$(OBJEXT) src_testsuite_hashcalc_OBJECTS = $(am_src_testsuite_hashcalc_OBJECTS) -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@src_testsuite_hashcalc_DEPENDENCIES = \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@ $(LIBINTERNAL_GLIBC) \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@ $(LIBENSCVECTOR_GLIBC) \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@ $(LIBVSERVER_GLIBC) -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@src_testsuite_hashcalc_DEPENDENCIES = \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@ $(LIBINTERNAL) \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@ $(LIBENSCVECTOR) \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@ $(am__DEPENDENCIES_2) +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@src_testsuite_hashcalc_DEPENDENCIES = \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@ $(LIBINTERNAL_GLIBC) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@ $(LIBENSCVECTOR_GLIBC) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@ $(LIBVSERVER_GLIBC) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@ $(am__DEPENDENCIES_1) +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@src_testsuite_hashcalc_DEPENDENCIES = \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@ $(LIBINTERNAL) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@ $(LIBENSCVECTOR) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@ $(am__DEPENDENCIES_1) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@ $(am__DEPENDENCIES_2) src_testsuite_hashcalc_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(src_testsuite_hashcalc_CFLAGS) $(CFLAGS) \ $(src_testsuite_hashcalc_LDFLAGS) $(LDFLAGS) -o $@ -am_src_testsuite_hashcalc_plain_OBJECTS = \ - src/testsuite/hashcalc-plain.$(OBJEXT) +am_src_testsuite_hashcalc_plain_OBJECTS = src/testsuite/src_testsuite_hashcalc_plain-hashcalc-plain.$(OBJEXT) src_testsuite_hashcalc_plain_OBJECTS = \ $(am_src_testsuite_hashcalc_plain_OBJECTS) -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@src_testsuite_hashcalc_plain_DEPENDENCIES = \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@ $(LIBINTERNAL_GLIBC) \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@ $(LIBENSCVECTOR_GLIBC) \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@ $(LIBVSERVER_GLIBC) -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@src_testsuite_hashcalc_plain_DEPENDENCIES = \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@ $(LIBINTERNAL) \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@ $(LIBENSCVECTOR) \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@ $(am__DEPENDENCIES_2) +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@src_testsuite_hashcalc_plain_DEPENDENCIES = \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@ $(LIBINTERNAL_GLIBC) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@ $(LIBENSCVECTOR_GLIBC) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@ $(LIBVSERVER_GLIBC) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@ $(am__DEPENDENCIES_1) +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@src_testsuite_hashcalc_plain_DEPENDENCIES = \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@ $(LIBINTERNAL) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@ $(LIBENSCVECTOR) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@ $(am__DEPENDENCIES_1) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@ $(am__DEPENDENCIES_2) src_testsuite_hashcalc_plain_LINK = $(LIBTOOL) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(src_testsuite_hashcalc_plain_LDFLAGS) \ - $(LDFLAGS) -o $@ + $(src_testsuite_hashcalc_plain_CFLAGS) $(CFLAGS) \ + $(src_testsuite_hashcalc_plain_LDFLAGS) $(LDFLAGS) -o $@ am_src_testsuite_rpm_fake_test_OBJECTS = \ src/testsuite/rpm-fake-test.$(OBJEXT) src_testsuite_rpm_fake_test_OBJECTS = \ @@ -1128,6 +1181,12 @@ am_src_testsuite_vunify_functest_OBJECTS = src/testsuite/src_testsuite_vunify_fu src_testsuite_vunify_functest_OBJECTS = \ $(am_src_testsuite_vunify_functest_OBJECTS) src_testsuite_vunify_functest_DEPENDENCIES = $(LIBINTERNAL) +am_src_tunctl_OBJECTS = src/tunctl.$(OBJEXT) +src_tunctl_OBJECTS = $(am_src_tunctl_OBJECTS) +src_tunctl_DEPENDENCIES = $(am__DEPENDENCIES_2) $(LIBINTERNAL) +src_tunctl_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(src_tunctl_LDFLAGS) $(LDFLAGS) -o $@ am_src_vattribute_OBJECTS = src/vattribute.$(OBJEXT) src_vattribute_OBJECTS = $(am_src_vattribute_OBJECTS) src_vattribute_DEPENDENCIES = $(am__DEPENDENCIES_2) @@ -1170,19 +1229,21 @@ src_vdu_DEPENDENCIES = $(am__DEPENDENCIES_2) $(LIBINTERNAL) src_vdu_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(src_vdu_LDFLAGS) \ $(LDFLAGS) -o $@ -am_src_vhashify_OBJECTS = src/vhashify.$(OBJEXT) +am_src_vhashify_OBJECTS = src/src_vhashify-vhashify.$(OBJEXT) src_vhashify_OBJECTS = $(am_src_vhashify_OBJECTS) -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@src_vhashify_DEPENDENCIES = \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@ $(LIBINTERNAL_GLIBC) \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@ $(LIBENSCVECTOR_GLIBC) \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@ $(LIBVSERVER_GLIBC) -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@src_vhashify_DEPENDENCIES = \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@ $(LIBINTERNAL) \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@ $(LIBENSCVECTOR) \ -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@ $(am__DEPENDENCIES_2) +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@src_vhashify_DEPENDENCIES = \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@ $(LIBINTERNAL_GLIBC) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@ $(LIBENSCVECTOR_GLIBC) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@ $(LIBVSERVER_GLIBC) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@ $(am__DEPENDENCIES_1) +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@src_vhashify_DEPENDENCIES = \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@ $(LIBINTERNAL) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@ $(LIBENSCVECTOR) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@ $(am__DEPENDENCIES_1) \ +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@ $(am__DEPENDENCIES_2) src_vhashify_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(src_vhashify_LDFLAGS) $(LDFLAGS) -o $@ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(src_vhashify_CFLAGS) \ + $(CFLAGS) $(src_vhashify_LDFLAGS) $(LDFLAGS) -o $@ am_src_vkill_OBJECTS = src/src_vkill-vkill.$(OBJEXT) src_vkill_OBJECTS = $(am_src_vkill_OBJECTS) src_vkill_DEPENDENCIES = $(am__DEPENDENCIES_2) @@ -1195,6 +1256,12 @@ src_vlimit_DEPENDENCIES = $(am__DEPENDENCIES_2) src_vlimit_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(src_vlimit_LDFLAGS) $(LDFLAGS) -o $@ +am_src_vmemctrl_OBJECTS = src/vmemctrl.$(OBJEXT) +src_vmemctrl_OBJECTS = $(am_src_vmemctrl_OBJECTS) +src_vmemctrl_DEPENDENCIES = $(am__DEPENDENCIES_2) $(LIBINTERNAL) +src_vmemctrl_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(src_vmemctrl_LDFLAGS) $(LDFLAGS) -o $@ am_src_vnamespace_OBJECTS = src/vnamespace.$(OBJEXT) src_vnamespace_OBJECTS = $(am_src_vnamespace_OBJECTS) src_vnamespace_DEPENDENCIES = $(am__DEPENDENCIES_2) $(LIBINTERNAL) @@ -1235,6 +1302,12 @@ src_vserver_stat_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ am_src_vshelper_sync_OBJECTS = src/vshelper-sync.$(OBJEXT) src_vshelper_sync_OBJECTS = $(am_src_vshelper_sync_OBJECTS) src_vshelper_sync_LDADD = $(LDADD) +am_src_vspace_OBJECTS = src/vspace.$(OBJEXT) +src_vspace_OBJECTS = $(am_src_vspace_OBJECTS) +src_vspace_DEPENDENCIES = $(am__DEPENDENCIES_2) $(LIBINTERNAL) +src_vspace_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(src_vspace_LDFLAGS) $(LDFLAGS) -o $@ am_src_vsysctl_OBJECTS = src/vsysctl.$(OBJEXT) src_vsysctl_OBJECTS = $(am_src_vsysctl_OBJECTS) src_vsysctl_DEPENDENCIES = $(am__DEPENDENCIES_2) @@ -1351,6 +1424,8 @@ SOURCES = $(nodist_lib_dietlibc_not_enabled_error_a_SOURCES) \ $(lib_testsuite_personality_SOURCES) \ $(lib_internal_testsuite_command_SOURCES) \ $(lib_internal_testsuite_copy_SOURCES) \ + $(lib_internal_testsuite_crypto_SOURCES) \ + $(lib_internal_testsuite_crypto_speed_SOURCES) \ $(lib_internal_testsuite_filecfg_ml_SOURCES) \ $(lib_internal_testsuite_isnumber_SOURCES) \ $(lib_internal_testsuite_isnumber_gnu_SOURCES) \ @@ -1378,16 +1453,17 @@ SOURCES = $(nodist_lib_dietlibc_not_enabled_error_a_SOURCES) \ $(src_testsuite_hashcalc_SOURCES) \ $(src_testsuite_hashcalc_plain_SOURCES) \ $(src_testsuite_rpm_fake_test_SOURCES) \ - $(src_testsuite_vunify_functest_SOURCES) \ + $(src_testsuite_vunify_functest_SOURCES) $(src_tunctl_SOURCES) \ $(src_vattribute_SOURCES) $(src_vclone_SOURCES) \ $(src_vcontext_SOURCES) $(src_vcopy_SOURCES) \ $(src_vdevmap_SOURCES) $(src_vdlimit_SOURCES) \ $(src_vdu_SOURCES) $(src_vhashify_SOURCES) \ $(src_vkill_SOURCES) $(src_vlimit_SOURCES) \ - $(src_vnamespace_SOURCES) $(src_vps_SOURCES) \ - $(src_vreboot_SOURCES) src/vrsetup.c $(src_vsched_SOURCES) \ - $(src_vserver_info_SOURCES) $(src_vserver_stat_SOURCES) \ - $(src_vshelper_sync_SOURCES) $(src_vsysctl_SOURCES) \ + $(src_vmemctrl_SOURCES) $(src_vnamespace_SOURCES) \ + $(src_vps_SOURCES) $(src_vreboot_SOURCES) src/vrsetup.c \ + $(src_vsched_SOURCES) $(src_vserver_info_SOURCES) \ + $(src_vserver_stat_SOURCES) $(src_vshelper_sync_SOURCES) \ + $(src_vspace_SOURCES) $(src_vsysctl_SOURCES) \ $(src_vtag_SOURCES) $(src_vuname_SOURCES) \ $(src_vunify_SOURCES) $(src_vwait_SOURCES) \ $(tests_escaperoot_SOURCES) $(tests_forkbomb_SOURCES) \ @@ -1409,6 +1485,8 @@ DIST_SOURCES = $(am__lib_libvserver_a_SOURCES_DIST) \ $(lib_testsuite_personality_SOURCES) \ $(lib_internal_testsuite_command_SOURCES) \ $(lib_internal_testsuite_copy_SOURCES) \ + $(am__lib_internal_testsuite_crypto_SOURCES_DIST) \ + $(am__lib_internal_testsuite_crypto_speed_SOURCES_DIST) \ $(lib_internal_testsuite_filecfg_ml_SOURCES) \ $(lib_internal_testsuite_isnumber_SOURCES) \ $(lib_internal_testsuite_isnumber_gnu_SOURCES) \ @@ -1436,16 +1514,17 @@ DIST_SOURCES = $(am__lib_libvserver_a_SOURCES_DIST) \ $(src_testsuite_hashcalc_SOURCES) \ $(src_testsuite_hashcalc_plain_SOURCES) \ $(src_testsuite_rpm_fake_test_SOURCES) \ - $(src_testsuite_vunify_functest_SOURCES) \ + $(src_testsuite_vunify_functest_SOURCES) $(src_tunctl_SOURCES) \ $(src_vattribute_SOURCES) $(src_vclone_SOURCES) \ $(src_vcontext_SOURCES) $(src_vcopy_SOURCES) \ $(src_vdevmap_SOURCES) $(src_vdlimit_SOURCES) \ $(src_vdu_SOURCES) $(src_vhashify_SOURCES) \ $(src_vkill_SOURCES) $(src_vlimit_SOURCES) \ - $(src_vnamespace_SOURCES) $(src_vps_SOURCES) \ - $(src_vreboot_SOURCES) src/vrsetup.c $(src_vsched_SOURCES) \ - $(src_vserver_info_SOURCES) $(src_vserver_stat_SOURCES) \ - $(src_vshelper_sync_SOURCES) $(src_vsysctl_SOURCES) \ + $(src_vmemctrl_SOURCES) $(src_vnamespace_SOURCES) \ + $(src_vps_SOURCES) $(src_vreboot_SOURCES) src/vrsetup.c \ + $(src_vsched_SOURCES) $(src_vserver_info_SOURCES) \ + $(src_vserver_stat_SOURCES) $(src_vshelper_sync_SOURCES) \ + $(src_vspace_SOURCES) $(src_vsysctl_SOURCES) \ $(src_vtag_SOURCES) $(src_vuname_SOURCES) \ $(src_vunify_SOURCES) $(src_vwait_SOURCES) \ $(tests_escaperoot_SOURCES) $(tests_forkbomb_SOURCES) \ @@ -1473,11 +1552,11 @@ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags -@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_13 = \ +@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_14 = \ @ENSC_HAVE_C99_COMPILER_TRUE@ src/testsuite/vunify-test.sh \ @ENSC_HAVE_C99_COMPILER_TRUE@ $(am__append_7) -am__EXEEXT_14 = $(am__EXEEXT_13) -@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_15 = lib_internal/testsuite/filecfg-ml$(EXEEXT) \ +am__EXEEXT_15 = $(am__EXEEXT_14) +@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_16 = lib_internal/testsuite/filecfg-ml$(EXEEXT) \ @ENSC_HAVE_C99_COMPILER_TRUE@ lib_internal/testsuite/copy-check \ @ENSC_HAVE_C99_COMPILER_TRUE@ lib_internal/testsuite/isnumber$(EXEEXT) \ @ENSC_HAVE_C99_COMPILER_TRUE@ lib_internal/testsuite/isnumber-gnu$(EXEEXT) \ @@ -1485,6 +1564,8 @@ am__EXEEXT_14 = $(am__EXEEXT_13) @ENSC_HAVE_C99_COMPILER_TRUE@ lib_internal/testsuite/sigbus-gnu$(EXEEXT) \ @ENSC_HAVE_C99_COMPILER_TRUE@ lib_internal/testsuite/matchlist$(EXEEXT) \ @ENSC_HAVE_C99_COMPILER_TRUE@ lib_internal/testsuite/matchlist-gnu$(EXEEXT) +@ENSC_HAVE_CRYPTO_TRUE@am__EXEEXT_17 = \ +@ENSC_HAVE_CRYPTO_TRUE@ lib_internal/testsuite/crypto$(EXEEXT) DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) @@ -1531,6 +1612,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENSC_CRYPTO_CFLAGS = @ENSC_CRYPTO_CFLAGS@ +ENSC_CRYPTO_LIB = @ENSC_CRYPTO_LIB@ ENSC_PATHPROG_SED = @ENSC_PATHPROG_SED@ ENSC_USE_EXPENSIVE_TESTS = @ENSC_USE_EXPENSIVE_TESTS@ ENV = @ENV@ @@ -1538,6 +1621,7 @@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ FILE = @FILE@ +FSCK = @FSCK@ GPG_KEY = @GPG_KEY@ GREP = @GREP@ GZIP = @GZIP@ @@ -1568,6 +1652,8 @@ MV = @MV@ NAMEIF = @NAMEIF@ NICE = @NICE@ NOHUP = @NOHUP@ +NSS_CFLAGS = @NSS_CFLAGS@ +NSS_LIBS = @NSS_LIBS@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -1576,6 +1662,7 @@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ PS = @PS@ RANLIB = @RANLIB@ RELEASE_CPPFLAGS = @RELEASE_CPPFLAGS@ @@ -1679,7 +1766,8 @@ noinst_HEADERS = $(ENSC_VECTOR_HDRS) compat.h compat-c99.h \ src/compat-pivot_root.h src/stack-start.h src/vcopy-init.hc \ src/vunify.h src/vunify-init.hc src/vhashify.h \ src/vhashify-init.hc src/vserver-visitdir.hc \ - src/context-sync.hc ensc_wrappers/wrappers-clone.hc \ + src/context-sync.hc src/attribute-util.h \ + ensc_wrappers/wrappers-clone.hc \ ensc_wrappers/wrappers-dirent.hc \ ensc_wrappers/wrappers-fcntl.hc ensc_wrappers/wrappers-io.hc \ ensc_wrappers/wrappers-ioctl.hc \ @@ -1696,14 +1784,17 @@ noinst_HEADERS = $(ENSC_VECTOR_HDRS) compat.h compat-c99.h \ ensc_wrappers/wrappers-vserver.hc \ ensc_wrappers/wrappers-wait.hc ensc_wrappers/wrappers.h \ ensc_wrappers/wrappers_handler.hc lib_internal/coreassert.h \ - lib_internal/errinfo.h lib_internal/jail.h \ - lib_internal/matchlist.h lib_internal/pathinfo.h \ - lib_internal/string.h lib_internal/sys_clone.h \ - lib_internal/sys_personality.h lib_internal/sys_unshare.h \ - lib_internal/unify.h lib_internal/util.h \ - lib_internal/util-cast.h lib_internal/util-commonstrings.h \ - lib_internal/util-debug.h lib_internal/util-declarecmd.h \ - lib_internal/util-dimof.h lib_internal/util-dotfile.h \ + lib_internal/crypto-wrapper.h \ + lib_internal/crypto-wrapper-nss.h \ + lib_internal/crypto-wrapper-beecrypt.h lib_internal/errinfo.h \ + lib_internal/jail.h lib_internal/matchlist.h \ + lib_internal/pathinfo.h lib_internal/string.h \ + lib_internal/sys_clone.h lib_internal/sys_personality.h \ + lib_internal/sys_unshare.h lib_internal/unify.h \ + lib_internal/util.h lib_internal/util-cast.h \ + lib_internal/util-commonstrings.h lib_internal/util-debug.h \ + lib_internal/util-declarecmd.h lib_internal/util-dimof.h \ + lib_internal/util-dotfile.h \ lib_internal/util-exitlikeprocess.h lib_internal/util-io.h \ lib_internal/util-lockfile.h lib_internal/util-mem.h \ lib_internal/util-perror.h lib_internal/util-safechdir.h \ @@ -1713,7 +1804,7 @@ noinst_LIBRARIES = $(ENSC_VECTOR_LIBS) $(LIBINTERNAL_GLIBC) \ lib_LIBRARIES = $(am__append_2) lib_LTLIBRARIES = $(LIBVSERVER_GLIBC) pkglib_LTLIBRARIES = src/rpm-fake.la -pkglib_SCRIPTS = $(scripts_pkglib_src_SCRPTS) $(am__append_20) +pkglib_SCRIPTS = $(scripts_pkglib_src_SCRPTS) $(am__append_23) pkglib_DATA = FEATURES.txt $(scripts_pkglib_src_DTA) \ $(scripts_pkglib_gen_DTA) legacy_SCRIPTS = $(scripts_legacy_src_SCRPTS) \ @@ -1721,7 +1812,7 @@ legacy_SCRIPTS = $(scripts_legacy_src_SCRPTS) \ sbin_SCRIPTS = $(scripts_sbin_src_PRGS) $(scripts_sbin_gen_PRGS) \ $(scripts_legacy_src_PRGS) noinst_DATA = $(contrib_gen_DTA) -initrd_SCRIPTS = $(am__append_11) $(am__append_19) +initrd_SCRIPTS = $(am__append_11) $(am__append_22) sysconf_DATA = $(am__append_10) DIETPROGS = $(LIBENSCVECTOR_DIET) lib/lib_libvserver_a-% \ ensc_fmt/lib_libvserver_a-% lib/testsuite/cflags \ @@ -1737,14 +1828,16 @@ DIETPROGS = $(LIBENSCVECTOR_DIET) lib/lib_libvserver_a-% \ src/vsched src/vshelper-sync src/vrsetup src/vserver-stat \ src/vserver-info src/vdlimit src/vdu src/vwait src/ncontext \ src/nattribute src/naddress src/vdevmap src/vsysctl src/vclone \ - src/h2ext src/vtag $(am__append_3) $(tests_dietprogs) \ + src/h2ext src/vtag src/vspace src/vmemctrl src/tunctl \ + $(am__append_3) $(tests_dietprogs) \ lib_internal/libinternal-diet.a \ lib_internal/testsuite/isnumber lib_internal/testsuite/sigbus \ - lib_internal/testsuite/matchlist $(am__append_17) + lib_internal/testsuite/matchlist $(am__append_19) \ + $(am__append_20) BUILT_SOURCES = pathconfig.h \ .fixups -man_MANS = $(man_pages) +man_MANS = $(man_pages) $(man_gen_DTA) kernel_HDRS = $(wildcard kernel/*.h) EXTRA_DIST = pathconfig.h.pathsubst util-vserver.spec THANKS \ REQUIREMENTS $(kernel_HDRS) lib/apidoc/list2xxx.syntax \ @@ -1752,7 +1845,7 @@ EXTRA_DIST = pathconfig.h.pathsubst util-vserver.spec THANKS \ src/testsuite/hashcalc.sh src/testsuite/hashcalc-plain.sh \ src/testsuite/vwait-test.sh $(doc_compatibility_SRCS) \ $(doc_configuration_SRCS) $(doc_old_doc) $(doc_gen_DOCS) \ - $(man_pages) $(scripts_pkglib_src_DTA) \ + $(man_pages) $(man_susbt_SRCS) $(scripts_pkglib_src_DTA) \ $(scripts_pkglib_src_SCRPTS) $(scripts_legacy_src_SCRPTS) \ $(scripts_legacy_src_PRGS) $(scripts_sbin_src_PRGS) \ $(scripts_subst_SRCS) sysv/v_gated.subst sysv/v_httpd.subst \ @@ -1764,9 +1857,9 @@ EXTRA_DIST = pathconfig.h.pathsubst util-vserver.spec THANKS \ contrib/yum-2.6.0-chroot.patch contrib/yum-2.9.6-chroot.patch \ contrib/yum-3.0.3-chroot.patch contrib/yum-3.0.5-chroot.patch \ contrib/yum-3.2.0-chroot.patch contrib/yum-3.2.1-chroot.patch \ - contrib/make-manifest lib_internal/testsuite/copy-check \ - $(gentoo_src_SCRPTS) gentoo/bash-wrapper $(addsuffix \ - .pc.subst, $(PKGCONFIG_FILES)) + contrib/yum-3.2.4-chroot.patch contrib/make-manifest \ + lib_internal/testsuite/copy-check $(gentoo_src_SCRPTS) \ + gentoo/bash-wrapper $(addsuffix .pc.subst, $(PKGCONFIG_FILES)) check_SCRIPTS = $(src_testsuite_check_src_SCRPTS) \ $(src_testsuite_check_gen_SCRPTS) TESTS_DEBUG = no @@ -1781,7 +1874,7 @@ AM_CPPFLAGS = -I $(top_srcdir)/lib -I $(top_srcdir)/ensc_wrappers \ CLEANFILES = $(BUILT_SOURCES) .*.pathsubst.stamp */.*.pathsubst.stamp \ */*/.*.pathsubst.stamp pathconfig.h .fixups lib/libvserver.la \ lib/libvserver.a lib/apidoc/.apidoc doc/*.raw.html* \ - doc/*.html.tmp $(am__append_8) $(am__append_9) \ + doc/*.html.tmp $(am__append_8) $(am__append_9) $(man_gen_DTA) \ $(scripts_pkglib_gen_DTA) $(scripts_sbin_gen_PRGS) \ $(scripts_sbincfg_gen_DTA) $(scripts_legacy_gen_SCRPTS) \ $(sysv_gen_SCRPTS) $(contrib_gen_DTA) libensc_vector-diet.a \ @@ -1796,12 +1889,12 @@ AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = src/parserpmdump src/showperm \ scripts/vyum-worker scripts/vrpm-preload \ scripts/save_s_context scripts/vservers.grabinfo.sh \ scripts/vpstree scripts/vserver-wrapper scripts/vsysvwrapper \ - scripts/vtop scripts/legacy/distrib-info scripts/legacy/vps \ - scripts/legacy/save_s_context scripts/legacy/vserver \ - scripts/legacy/rootshell scripts/legacy/vserver-copy \ - scripts/legacy/vserverkillall $(sysv_src_SCRPTS) \ - $(sysv_gen_SCRPTS) vserver-start/vserver.start.bin \ - $(gentoo_src_SCRPTS) + scripts/vtop scripts/h2ext-worker scripts/legacy/distrib-info \ + scripts/legacy/vps scripts/legacy/save_s_context \ + scripts/legacy/vserver scripts/legacy/rootshell \ + scripts/legacy/vserver-copy scripts/legacy/vserverkillall \ + $(sysv_src_SCRPTS) $(sysv_gen_SCRPTS) \ + vserver-start/vserver.start.bin $(gentoo_src_SCRPTS) @USE_DIETLIBC_TRUE@DIET_CC := $(DIET) $(DIETFLAGS) $(CC) @USE_DIETLIBC_FALSE@VSERVER_LDFLGS := @USE_DIETLIBC_TRUE@VSERVER_LDFLGS := -static @@ -1932,6 +2025,8 @@ lib_v21_SRCS = lib/syscall_setccaps-v21.hc \ lib/syscall_ctxmigrate-v21.hc \ lib/syscall_setmapping.c \ lib/syscall_setmapping-v21.hc \ + lib/syscall_unsetmapping.c \ + lib/syscall_unsetmapping-v21.hc \ lib/syscall_schedinfo.c \ lib/syscall_schedinfo-v21.hc \ lib/syscall_getccaps-v21.hc \ @@ -1952,7 +2047,11 @@ lib_v23_SRCS = lib/syscall_tagmigrate-v23.hc \ lib/syscall_tagmigrate.c \ lib/syscall_tagcreate.c \ lib/syscall_tasktag-v23.hc \ - lib/syscall_tasktag.c + lib/syscall_tasktag.c \ + lib/syscall_getbadness.c \ + lib/syscall_getbadness-v23.hc \ + lib/syscall_setbadness.c \ + lib/syscall_setbadness-v23.hc PKGCONFIG_FILES = lib/util-vserver lib_SRCS = lib/syscall.c \ @@ -2113,10 +2212,11 @@ src_vunify_SOURCES = src/vunify.c src_vunify_LDADD = $(LIBINTERNAL) $(VSERVER_LDADDS) src_vunify_LDFLAGS = $(VSERVER_LDFLGS) src_vhashify_SOURCES = src/vhashify.c -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@src_vhashify_LDADD = $(LIBINTERNAL_GLIBC) $(LIBENSCVECTOR_GLIBC) $(LIBVSERVER_GLIBC) -lbeecrypt -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@src_vhashify_LDADD = $(LIBINTERNAL) $(LIBENSCVECTOR) -lbeecrypt $(VSERVER_LDADDS) -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@src_vhashify_LDFLAGS = -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@src_vhashify_LDFLAGS = $(VSERVER_LDFLGS) +src_vhashify_CFLAGS = $(AM_CFLAGS) $(ENSC_CRYPTO_CFLAGS) +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@src_vhashify_LDADD = $(LIBINTERNAL_GLIBC) $(LIBENSCVECTOR_GLIBC) $(LIBVSERVER_GLIBC) $(ENSC_CRYPTO_LIB) +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@src_vhashify_LDADD = $(LIBINTERNAL) $(LIBENSCVECTOR) $(ENSC_CRYPTO_LIB) $(VSERVER_LDADDS) +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@src_vhashify_LDFLAGS = -Wl,--as-needed +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@src_vhashify_LDFLAGS = $(VSERVER_LDFLGS) src_vuname_SOURCES = src/vuname.c src_vuname_LDADD = $(VSERVER_LDADDS) src_vuname_LDFLAGS = $(VSERVER_LDFLGS) @@ -2154,6 +2254,15 @@ src_h2ext_LDFLAGS = $(VSERVER_LDFLGS) src_vtag_SOURCES = src/vtag.c src_vtag_LDADD = $(VSERVER_LDADDS) src_vtag_LDFLAGS = $(VSERVER_LDADDS) +src_vspace_SOURCES = src/vspace.c +src_vspace_LDADD = $(VSERVER_LDADDS) $(LIBINTERNAL) +src_vspace_LDFLAGS = $(VSERVER_LDFLGS) +src_vmemctrl_SOURCES = src/vmemctrl.c +src_vmemctrl_LDADD = $(VSERVER_LDADDS) $(LIBINTERNAL) +src_vmemctrl_LDFLAGS = $(VSERVER_LDFLGS) +src_tunctl_SOURCES = src/tunctl.c +src_tunctl_LDADD = $(VSERVER_LDADDS) $(LIBINTERNAL) +src_tunctl_LDFLAGS = $(VSERVER_LDFLGS) @ENSC_HAVE_C99_COMPILER_FALSE@src_sbin_C99_X_PROGS = @ENSC_HAVE_C99_COMPILER_TRUE@src_sbin_C99_X_PROGS = $(src_sbin_C99_PROGS) @ENSC_HAVE_C99_COMPILER_FALSE@src_pkglib_C99_X_PROGS = @@ -2184,14 +2293,16 @@ src_testsuite_chbind_test_SOURCES = src/testsuite/chbind-test.c src_testsuite_chbind_test_LDADD = lib/libvserver.la src_testsuite_hashcalc_SOURCES = src/testsuite/hashcalc.c src_testsuite_hashcalc_plain_SOURCES = src/testsuite/hashcalc-plain.c -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@src_testsuite_hashcalc_LDADD = $(LIBINTERNAL_GLIBC) $(LIBENSCVECTOR_GLIBC) $(LIBVSERVER_GLIBC) -lbeecrypt -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@src_testsuite_hashcalc_LDADD = $(LIBINTERNAL) $(LIBENSCVECTOR) -lbeecrypt $(VSERVER_LDADDS) -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@src_testsuite_hashcalc_LDFLAGS = -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@src_testsuite_hashcalc_LDFLAGS = $(VSERVER_LDFLGS) -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@src_testsuite_hashcalc_plain_LDADD = $(LIBINTERNAL_GLIBC) $(LIBENSCVECTOR_GLIBC) $(LIBVSERVER_GLIBC) -lbeecrypt -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@src_testsuite_hashcalc_plain_LDADD = $(LIBINTERNAL) $(LIBENSCVECTOR) -lbeecrypt $(VSERVER_LDADDS) -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@src_testsuite_hashcalc_plain_LDFLAGS = -@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@src_testsuite_hashcalc_plain_LDFLAGS = $(VSERVER_LDFLGS) +src_testsuite_hashcalc_CFLAGS = $(AM_CFLAGS) $(ENSC_CRYPTO_CFLAGS) +src_testsuite_hashcalc_plain_CFLAGS = $(AM_CFLAGS) $(ENSC_CRYPTO_CFLAGS) +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@src_testsuite_hashcalc_LDADD = $(LIBINTERNAL_GLIBC) $(LIBENSCVECTOR_GLIBC) $(LIBVSERVER_GLIBC) $(ENSC_CRYPTO_LIB) +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@src_testsuite_hashcalc_LDADD = $(LIBINTERNAL) $(LIBENSCVECTOR) $(ENSC_CRYPTO_LIB) $(VSERVER_LDADDS) +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@src_testsuite_hashcalc_LDFLAGS = -Wl,--as-needed +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@src_testsuite_hashcalc_LDFLAGS = $(VSERVER_LDFLGS) +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@src_testsuite_hashcalc_plain_LDADD = $(LIBINTERNAL_GLIBC) $(LIBENSCVECTOR_GLIBC) $(LIBVSERVER_GLIBC) $(ENSC_CRYPTO_LIB) +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@src_testsuite_hashcalc_plain_LDADD = $(LIBINTERNAL) $(LIBENSCVECTOR) $(ENSC_CRYPTO_LIB) $(VSERVER_LDADDS) +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@src_testsuite_hashcalc_plain_LDFLAGS = -Wl,--as-needed +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE@src_testsuite_hashcalc_plain_LDFLAGS = $(VSERVER_LDFLGS) src_testsuite_CPPFLAGS = -I $(top_srcdir)/src -D ENSC_TESTSUITE doc_old_doc = doc/intro.txt XSLT_AMFLAGS = --stringparam confdir '$(sysconfdir)/vservers' @@ -2222,6 +2333,8 @@ man_pages = man/chbind.8 \ man/vserver.8 \ man/vtop.8 +man_susbt_SRCS = man/vserver-build.8.pathsubst +man_gen_DTA = man/vserver-build.8 scripts_pkglib_src_DTA = scripts/functions \ scripts/vserver-build.apt-rpm \ scripts/vserver-build.skeleton \ @@ -2281,7 +2394,8 @@ scripts_sbin_src_PRGS = scripts/chbind \ scripts/vsomething \ scripts/vtop \ scripts/vupdateworld \ - scripts/vyum + scripts/vyum \ + scripts/vmount scripts_sbin_gen_PRGS = scripts_sbincfg_gen_DTA = @@ -2471,6 +2585,14 @@ lib_internal_testsuite_matchlist_CPPFLAGS = $(AM_CPPFLAGS) # see note above lib_internal_testsuite_matchlist_gnu_SOURCES = lib_internal/testsuite/matchlist.c lib_internal_testsuite_matchlist_gnu_LDADD = $(LIBINTERNAL_GLIBC) lib_internal_testsuite_matchlist_gnu_CPPFLAGS = $(AM_CPPFLAGS) # see note above +@ENSC_HAVE_CRYPTO_TRUE@lib_internal_testsuite_crypto_speed_SOURCES = lib_internal/testsuite/crypto-speed.c +@ENSC_HAVE_CRYPTO_TRUE@lib_internal_testsuite_crypto_speed_CFLAGS = $(AM_CFLAGS) $(ENSC_CRYPTO_CFLAGS) +@ENSC_HAVE_CRYPTO_TRUE@lib_internal_testsuite_crypto_speed_LDADD = $(ENSC_CRYPTO_LIB) -lrt +@ENSC_HAVE_CRYPTO_TRUE@lib_internal_testsuite_crypto_SOURCES = lib_internal/testsuite/crypto.c +@ENSC_HAVE_CRYPTO_TRUE@lib_internal_testsuite_crypto_CFLAGS = $(AM_CFLAGS) $(ENSC_CRYPTO_CFLAGS) +@ENSC_HAVE_CRYPTO_TRUE@lib_internal_testsuite_crypto_LDADD = $(ENSC_CRYPTO_LIB) +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@@ENSC_HAVE_CRYPTO_TRUE@lib_internal_testsuite_crypto_speed_LDFLAGS = -Wl,--as-needed +@ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE@@ENSC_HAVE_CRYPTO_TRUE@lib_internal_testsuite_crypto_LDFLAGS = -Wl,--as-needed vserver_start_vserver_start_bin_SOURCES = \ vserver-start/main.c \ vserver-start/mount.c \ @@ -2808,6 +2930,8 @@ lib/lib_libvserver_a-syscall_getspacemask.$(OBJEXT): \ lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp) lib/lib_libvserver_a-syscall_setmapping.$(OBJEXT): \ lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp) +lib/lib_libvserver_a-syscall_unsetmapping.$(OBJEXT): \ + lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp) lib/lib_libvserver_a-syscall_schedinfo.$(OBJEXT): lib/$(am__dirstamp) \ lib/$(DEPDIR)/$(am__dirstamp) lib/lib_libvserver_a-syscall_getsched.$(OBJEXT): lib/$(am__dirstamp) \ @@ -2822,6 +2946,10 @@ lib/lib_libvserver_a-syscall_tagcreate.$(OBJEXT): lib/$(am__dirstamp) \ lib/$(DEPDIR)/$(am__dirstamp) lib/lib_libvserver_a-syscall_tasktag.$(OBJEXT): lib/$(am__dirstamp) \ lib/$(DEPDIR)/$(am__dirstamp) +lib/lib_libvserver_a-syscall_getbadness.$(OBJEXT): \ + lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp) +lib/lib_libvserver_a-syscall_setbadness.$(OBJEXT): \ + lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp) ensc_fmt/$(am__dirstamp): @$(MKDIR_P) ensc_fmt @: > ensc_fmt/$(am__dirstamp) @@ -3448,6 +3576,8 @@ lib/lib_libvserver_la-syscall_getspacemask.lo: lib/$(am__dirstamp) \ lib/$(DEPDIR)/$(am__dirstamp) lib/lib_libvserver_la-syscall_setmapping.lo: lib/$(am__dirstamp) \ lib/$(DEPDIR)/$(am__dirstamp) +lib/lib_libvserver_la-syscall_unsetmapping.lo: lib/$(am__dirstamp) \ + lib/$(DEPDIR)/$(am__dirstamp) lib/lib_libvserver_la-syscall_schedinfo.lo: lib/$(am__dirstamp) \ lib/$(DEPDIR)/$(am__dirstamp) lib/lib_libvserver_la-syscall_getsched.lo: lib/$(am__dirstamp) \ @@ -3462,6 +3592,10 @@ lib/lib_libvserver_la-syscall_tagcreate.lo: lib/$(am__dirstamp) \ lib/$(DEPDIR)/$(am__dirstamp) lib/lib_libvserver_la-syscall_tasktag.lo: lib/$(am__dirstamp) \ lib/$(DEPDIR)/$(am__dirstamp) +lib/lib_libvserver_la-syscall_getbadness.lo: lib/$(am__dirstamp) \ + lib/$(DEPDIR)/$(am__dirstamp) +lib/lib_libvserver_la-syscall_setbadness.lo: lib/$(am__dirstamp) \ + lib/$(DEPDIR)/$(am__dirstamp) ensc_fmt/lib_libvserver_la-fmt-32.lo: ensc_fmt/$(am__dirstamp) \ ensc_fmt/$(DEPDIR)/$(am__dirstamp) ensc_fmt/lib_libvserver_la-fmt-64.lo: ensc_fmt/$(am__dirstamp) \ @@ -3696,6 +3830,18 @@ lib_internal/testsuite/copy.$(OBJEXT): \ lib_internal/testsuite/copy$(EXEEXT): $(lib_internal_testsuite_copy_OBJECTS) $(lib_internal_testsuite_copy_DEPENDENCIES) lib_internal/testsuite/$(am__dirstamp) @rm -f lib_internal/testsuite/copy$(EXEEXT) $(LINK) $(lib_internal_testsuite_copy_OBJECTS) $(lib_internal_testsuite_copy_LDADD) $(LIBS) +lib_internal/testsuite/lib_internal_testsuite_crypto-crypto.$(OBJEXT): \ + lib_internal/testsuite/$(am__dirstamp) \ + lib_internal/testsuite/$(DEPDIR)/$(am__dirstamp) +lib_internal/testsuite/crypto$(EXEEXT): $(lib_internal_testsuite_crypto_OBJECTS) $(lib_internal_testsuite_crypto_DEPENDENCIES) lib_internal/testsuite/$(am__dirstamp) + @rm -f lib_internal/testsuite/crypto$(EXEEXT) + $(lib_internal_testsuite_crypto_LINK) $(lib_internal_testsuite_crypto_OBJECTS) $(lib_internal_testsuite_crypto_LDADD) $(LIBS) +lib_internal/testsuite/lib_internal_testsuite_crypto_speed-crypto-speed.$(OBJEXT): \ + lib_internal/testsuite/$(am__dirstamp) \ + lib_internal/testsuite/$(DEPDIR)/$(am__dirstamp) +lib_internal/testsuite/crypto-speed$(EXEEXT): $(lib_internal_testsuite_crypto_speed_OBJECTS) $(lib_internal_testsuite_crypto_speed_DEPENDENCIES) lib_internal/testsuite/$(am__dirstamp) + @rm -f lib_internal/testsuite/crypto-speed$(EXEEXT) + $(lib_internal_testsuite_crypto_speed_LINK) $(lib_internal_testsuite_crypto_speed_OBJECTS) $(lib_internal_testsuite_crypto_speed_LDADD) $(LIBS) lib_internal/testsuite/filecfg-ml.$(OBJEXT): \ lib_internal/testsuite/$(am__dirstamp) \ lib_internal/testsuite/$(DEPDIR)/$(am__dirstamp) @@ -3913,12 +4059,14 @@ src/testsuite/chcontext-test.$(OBJEXT): src/testsuite/$(am__dirstamp) \ src/testsuite/chcontext-test$(EXEEXT): $(src_testsuite_chcontext_test_OBJECTS) $(src_testsuite_chcontext_test_DEPENDENCIES) src/testsuite/$(am__dirstamp) @rm -f src/testsuite/chcontext-test$(EXEEXT) $(LINK) $(src_testsuite_chcontext_test_OBJECTS) $(src_testsuite_chcontext_test_LDADD) $(LIBS) -src/testsuite/hashcalc.$(OBJEXT): src/testsuite/$(am__dirstamp) \ +src/testsuite/src_testsuite_hashcalc-hashcalc.$(OBJEXT): \ + src/testsuite/$(am__dirstamp) \ src/testsuite/$(DEPDIR)/$(am__dirstamp) src/testsuite/hashcalc$(EXEEXT): $(src_testsuite_hashcalc_OBJECTS) $(src_testsuite_hashcalc_DEPENDENCIES) src/testsuite/$(am__dirstamp) @rm -f src/testsuite/hashcalc$(EXEEXT) $(src_testsuite_hashcalc_LINK) $(src_testsuite_hashcalc_OBJECTS) $(src_testsuite_hashcalc_LDADD) $(LIBS) -src/testsuite/hashcalc-plain.$(OBJEXT): src/testsuite/$(am__dirstamp) \ +src/testsuite/src_testsuite_hashcalc_plain-hashcalc-plain.$(OBJEXT): \ + src/testsuite/$(am__dirstamp) \ src/testsuite/$(DEPDIR)/$(am__dirstamp) src/testsuite/hashcalc-plain$(EXEEXT): $(src_testsuite_hashcalc_plain_OBJECTS) $(src_testsuite_hashcalc_plain_DEPENDENCIES) src/testsuite/$(am__dirstamp) @rm -f src/testsuite/hashcalc-plain$(EXEEXT) @@ -3934,6 +4082,11 @@ src/testsuite/src_testsuite_vunify_functest-vunify-functest.$(OBJEXT): \ src/testsuite/vunify-functest$(EXEEXT): $(src_testsuite_vunify_functest_OBJECTS) $(src_testsuite_vunify_functest_DEPENDENCIES) src/testsuite/$(am__dirstamp) @rm -f src/testsuite/vunify-functest$(EXEEXT) $(LINK) $(src_testsuite_vunify_functest_OBJECTS) $(src_testsuite_vunify_functest_LDADD) $(LIBS) +src/tunctl.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/tunctl$(EXEEXT): $(src_tunctl_OBJECTS) $(src_tunctl_DEPENDENCIES) src/$(am__dirstamp) + @rm -f src/tunctl$(EXEEXT) + $(src_tunctl_LINK) $(src_tunctl_OBJECTS) $(src_tunctl_LDADD) $(LIBS) src/vattribute.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/vattribute$(EXEEXT): $(src_vattribute_OBJECTS) $(src_vattribute_DEPENDENCIES) src/$(am__dirstamp) @@ -3969,7 +4122,7 @@ src/vdu.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) src/vdu$(EXEEXT): $(src_vdu_OBJECTS) $(src_vdu_DEPENDENCIES) src/$(am__dirstamp) @rm -f src/vdu$(EXEEXT) $(src_vdu_LINK) $(src_vdu_OBJECTS) $(src_vdu_LDADD) $(LIBS) -src/vhashify.$(OBJEXT): src/$(am__dirstamp) \ +src/src_vhashify-vhashify.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/vhashify$(EXEEXT): $(src_vhashify_OBJECTS) $(src_vhashify_DEPENDENCIES) src/$(am__dirstamp) @rm -f src/vhashify$(EXEEXT) @@ -3984,6 +4137,11 @@ src/vlimit.$(OBJEXT): src/$(am__dirstamp) \ src/vlimit$(EXEEXT): $(src_vlimit_OBJECTS) $(src_vlimit_DEPENDENCIES) src/$(am__dirstamp) @rm -f src/vlimit$(EXEEXT) $(src_vlimit_LINK) $(src_vlimit_OBJECTS) $(src_vlimit_LDADD) $(LIBS) +src/vmemctrl.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vmemctrl$(EXEEXT): $(src_vmemctrl_OBJECTS) $(src_vmemctrl_DEPENDENCIES) src/$(am__dirstamp) + @rm -f src/vmemctrl$(EXEEXT) + $(src_vmemctrl_LINK) $(src_vmemctrl_OBJECTS) $(src_vmemctrl_LDADD) $(LIBS) src/vnamespace.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/vnamespace$(EXEEXT): $(src_vnamespace_OBJECTS) $(src_vnamespace_DEPENDENCIES) src/$(am__dirstamp) @@ -4023,6 +4181,11 @@ src/vshelper-sync.$(OBJEXT): src/$(am__dirstamp) \ src/vshelper-sync$(EXEEXT): $(src_vshelper_sync_OBJECTS) $(src_vshelper_sync_DEPENDENCIES) src/$(am__dirstamp) @rm -f src/vshelper-sync$(EXEEXT) $(LINK) $(src_vshelper_sync_OBJECTS) $(src_vshelper_sync_LDADD) $(LIBS) +src/vspace.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vspace$(EXEEXT): $(src_vspace_OBJECTS) $(src_vspace_DEPENDENCIES) src/$(am__dirstamp) + @rm -f src/vspace$(EXEEXT) + $(src_vspace_LINK) $(src_vspace_OBJECTS) $(src_vspace_LDADD) $(LIBS) src/vsysctl.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/vsysctl$(EXEEXT): $(src_vsysctl_OBJECTS) $(src_vsysctl_DEPENDENCIES) src/$(am__dirstamp) @@ -4379,6 +4542,7 @@ mostlyclean-compile: -rm -f lib/lib_libvserver_a-syscall_enternamespace.$(OBJEXT) -rm -f lib/lib_libvserver_a-syscall_fgetiattr.$(OBJEXT) -rm -f lib/lib_libvserver_a-syscall_fsetiattr.$(OBJEXT) + -rm -f lib/lib_libvserver_a-syscall_getbadness.$(OBJEXT) -rm -f lib/lib_libvserver_a-syscall_getccaps.$(OBJEXT) -rm -f lib/lib_libvserver_a-syscall_getcflags.$(OBJEXT) -rm -f lib/lib_libvserver_a-syscall_getdlimit.$(OBJEXT) @@ -4403,6 +4567,7 @@ mostlyclean-compile: -rm -f lib/lib_libvserver_a-syscall_rlimit.$(OBJEXT) -rm -f lib/lib_libvserver_a-syscall_rlimitstat.$(OBJEXT) -rm -f lib/lib_libvserver_a-syscall_schedinfo.$(OBJEXT) + -rm -f lib/lib_libvserver_a-syscall_setbadness.$(OBJEXT) -rm -f lib/lib_libvserver_a-syscall_setccaps.$(OBJEXT) -rm -f lib/lib_libvserver_a-syscall_setcflags.$(OBJEXT) -rm -f lib/lib_libvserver_a-syscall_setdlimit.$(OBJEXT) @@ -4416,6 +4581,7 @@ mostlyclean-compile: -rm -f lib/lib_libvserver_a-syscall_tagcreate.$(OBJEXT) -rm -f lib/lib_libvserver_a-syscall_tagmigrate.$(OBJEXT) -rm -f lib/lib_libvserver_a-syscall_tasktag.$(OBJEXT) + -rm -f lib/lib_libvserver_a-syscall_unsetmapping.$(OBJEXT) -rm -f lib/lib_libvserver_a-syscall_virtstat.$(OBJEXT) -rm -f lib/lib_libvserver_a-syscall_waitexit.$(OBJEXT) -rm -f lib/lib_libvserver_a-tagopt2tag.$(OBJEXT) @@ -4530,6 +4696,8 @@ mostlyclean-compile: -rm -f lib/lib_libvserver_la-syscall_fgetiattr.lo -rm -f lib/lib_libvserver_la-syscall_fsetiattr.$(OBJEXT) -rm -f lib/lib_libvserver_la-syscall_fsetiattr.lo + -rm -f lib/lib_libvserver_la-syscall_getbadness.$(OBJEXT) + -rm -f lib/lib_libvserver_la-syscall_getbadness.lo -rm -f lib/lib_libvserver_la-syscall_getccaps.$(OBJEXT) -rm -f lib/lib_libvserver_la-syscall_getccaps.lo -rm -f lib/lib_libvserver_la-syscall_getcflags.$(OBJEXT) @@ -4578,6 +4746,8 @@ mostlyclean-compile: -rm -f lib/lib_libvserver_la-syscall_rlimitstat.lo -rm -f lib/lib_libvserver_la-syscall_schedinfo.$(OBJEXT) -rm -f lib/lib_libvserver_la-syscall_schedinfo.lo + -rm -f lib/lib_libvserver_la-syscall_setbadness.$(OBJEXT) + -rm -f lib/lib_libvserver_la-syscall_setbadness.lo -rm -f lib/lib_libvserver_la-syscall_setccaps.$(OBJEXT) -rm -f lib/lib_libvserver_la-syscall_setccaps.lo -rm -f lib/lib_libvserver_la-syscall_setcflags.$(OBJEXT) @@ -4604,6 +4774,8 @@ mostlyclean-compile: -rm -f lib/lib_libvserver_la-syscall_tagmigrate.lo -rm -f lib/lib_libvserver_la-syscall_tasktag.$(OBJEXT) -rm -f lib/lib_libvserver_la-syscall_tasktag.lo + -rm -f lib/lib_libvserver_la-syscall_unsetmapping.$(OBJEXT) + -rm -f lib/lib_libvserver_la-syscall_unsetmapping.lo -rm -f lib/lib_libvserver_la-syscall_virtstat.$(OBJEXT) -rm -f lib/lib_libvserver_la-syscall_virtstat.lo -rm -f lib/lib_libvserver_la-syscall_waitexit.$(OBJEXT) @@ -4701,6 +4873,8 @@ mostlyclean-compile: -rm -f lib_internal/testsuite/command.$(OBJEXT) -rm -f lib_internal/testsuite/copy.$(OBJEXT) -rm -f lib_internal/testsuite/filecfg-ml.$(OBJEXT) + -rm -f lib_internal/testsuite/lib_internal_testsuite_crypto-crypto.$(OBJEXT) + -rm -f lib_internal/testsuite/lib_internal_testsuite_crypto_speed-crypto-speed.$(OBJEXT) -rm -f lib_internal/testsuite/lib_internal_testsuite_isnumber-isnumber.$(OBJEXT) -rm -f lib_internal/testsuite/lib_internal_testsuite_isnumber_gnu-isnumber.$(OBJEXT) -rm -f lib_internal/testsuite/lib_internal_testsuite_matchlist-matchlist.$(OBJEXT) @@ -4742,13 +4916,15 @@ mostlyclean-compile: -rm -f src/sigexec.$(OBJEXT) -rm -f src/src_rpm_fake_la-rpm-fake.$(OBJEXT) -rm -f src/src_rpm_fake_la-rpm-fake.lo + -rm -f src/src_vhashify-vhashify.$(OBJEXT) -rm -f src/src_vkill-vkill.$(OBJEXT) -rm -f src/testsuite/chbind-test.$(OBJEXT) -rm -f src/testsuite/chcontext-test.$(OBJEXT) - -rm -f src/testsuite/hashcalc-plain.$(OBJEXT) - -rm -f src/testsuite/hashcalc.$(OBJEXT) -rm -f src/testsuite/rpm-fake-test.$(OBJEXT) + -rm -f src/testsuite/src_testsuite_hashcalc-hashcalc.$(OBJEXT) + -rm -f src/testsuite/src_testsuite_hashcalc_plain-hashcalc-plain.$(OBJEXT) -rm -f src/testsuite/src_testsuite_vunify_functest-vunify-functest.$(OBJEXT) + -rm -f src/tunctl.$(OBJEXT) -rm -f src/vattribute.$(OBJEXT) -rm -f src/vclone.$(OBJEXT) -rm -f src/vcontext.$(OBJEXT) @@ -4756,9 +4932,9 @@ mostlyclean-compile: -rm -f src/vdevmap.$(OBJEXT) -rm -f src/vdlimit.$(OBJEXT) -rm -f src/vdu.$(OBJEXT) - -rm -f src/vhashify.$(OBJEXT) -rm -f src/vlimit.$(OBJEXT) -rm -f src/vlogin.$(OBJEXT) + -rm -f src/vmemctrl.$(OBJEXT) -rm -f src/vnamespace.$(OBJEXT) -rm -f src/vps.$(OBJEXT) -rm -f src/vreboot.$(OBJEXT) @@ -4767,6 +4943,7 @@ mostlyclean-compile: -rm -f src/vserver-info.$(OBJEXT) -rm -f src/vserver-stat.$(OBJEXT) -rm -f src/vshelper-sync.$(OBJEXT) + -rm -f src/vspace.$(OBJEXT) -rm -f src/vsysctl.$(OBJEXT) -rm -f src/vtag.$(OBJEXT) -rm -f src/vuname.$(OBJEXT) @@ -4904,6 +5081,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_enternamespace.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_fgetiattr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_fsetiattr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_getbadness.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_getccaps.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_getcflags.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_getdlimit.Po@am__quote@ @@ -4928,6 +5106,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimitstat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_schedinfo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_setbadness.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_setccaps.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_setcflags.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_setdlimit.Po@am__quote@ @@ -4941,6 +5120,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_tagcreate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_tagmigrate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_tasktag.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_unsetmapping.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_virtstat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_waitexit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-tagopt2tag.Po@am__quote@ @@ -5002,6 +5182,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_enternamespace.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_fgetiattr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_fsetiattr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_getbadness.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_getccaps.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_getcflags.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_getdlimit.Plo@am__quote@ @@ -5026,6 +5207,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_rlimit.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_rlimitstat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_schedinfo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_setbadness.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_setccaps.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_setcflags.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_setdlimit.Plo@am__quote@ @@ -5039,6 +5221,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_tagcreate.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_tagmigrate.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_tasktag.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_unsetmapping.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_virtstat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_waitexit.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-tagopt2tag.Plo@am__quote@ @@ -5128,6 +5311,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@lib_internal/testsuite/$(DEPDIR)/command.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib_internal/testsuite/$(DEPDIR)/copy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib_internal/testsuite/$(DEPDIR)/filecfg-ml.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_crypto-crypto.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_crypto_speed-crypto-speed.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_isnumber-isnumber.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_isnumber_gnu-isnumber.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_matchlist-matchlist.Po@am__quote@ @@ -5168,7 +5353,9 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/showperm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/sigexec.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/src_rpm_fake_la-rpm-fake.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/src_vhashify-vhashify.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/src_vkill-vkill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/tunctl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vattribute.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vclone.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vcontext.Po@am__quote@ @@ -5176,9 +5363,9 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vdevmap.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vdlimit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vdu.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vhashify.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vlimit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vlogin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vmemctrl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vnamespace.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vps.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vreboot.Po@am__quote@ @@ -5187,6 +5374,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vserver-info.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vserver-stat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vshelper-sync.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vspace.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vsysctl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vtag.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vuname.Po@am__quote@ @@ -5194,9 +5382,9 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vwait.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/testsuite/$(DEPDIR)/chbind-test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/testsuite/$(DEPDIR)/chcontext-test.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/testsuite/$(DEPDIR)/hashcalc-plain.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/testsuite/$(DEPDIR)/hashcalc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/testsuite/$(DEPDIR)/rpm-fake-test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/testsuite/$(DEPDIR)/src_testsuite_hashcalc-hashcalc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/testsuite/$(DEPDIR)/src_testsuite_hashcalc_plain-hashcalc-plain.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/testsuite/$(DEPDIR)/src_testsuite_vunify_functest-vunify-functest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/escaperoot.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/forkbomb.Po@am__quote@ @@ -6518,6 +6706,20 @@ lib/lib_libvserver_a-syscall_setmapping.obj: lib/syscall_setmapping.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setmapping.obj `if test -f 'lib/syscall_setmapping.c'; then $(CYGPATH_W) 'lib/syscall_setmapping.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setmapping.c'; fi` +lib/lib_libvserver_a-syscall_unsetmapping.o: lib/syscall_unsetmapping.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_unsetmapping.o -MD -MP -MF lib/$(DEPDIR)/lib_libvserver_a-syscall_unsetmapping.Tpo -c -o lib/lib_libvserver_a-syscall_unsetmapping.o `test -f 'lib/syscall_unsetmapping.c' || echo '$(srcdir)/'`lib/syscall_unsetmapping.c +@am__fastdepCC_TRUE@ mv -f lib/$(DEPDIR)/lib_libvserver_a-syscall_unsetmapping.Tpo lib/$(DEPDIR)/lib_libvserver_a-syscall_unsetmapping.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib/syscall_unsetmapping.c' object='lib/lib_libvserver_a-syscall_unsetmapping.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_unsetmapping.o `test -f 'lib/syscall_unsetmapping.c' || echo '$(srcdir)/'`lib/syscall_unsetmapping.c + +lib/lib_libvserver_a-syscall_unsetmapping.obj: lib/syscall_unsetmapping.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_unsetmapping.obj -MD -MP -MF lib/$(DEPDIR)/lib_libvserver_a-syscall_unsetmapping.Tpo -c -o lib/lib_libvserver_a-syscall_unsetmapping.obj `if test -f 'lib/syscall_unsetmapping.c'; then $(CYGPATH_W) 'lib/syscall_unsetmapping.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_unsetmapping.c'; fi` +@am__fastdepCC_TRUE@ mv -f lib/$(DEPDIR)/lib_libvserver_a-syscall_unsetmapping.Tpo lib/$(DEPDIR)/lib_libvserver_a-syscall_unsetmapping.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib/syscall_unsetmapping.c' object='lib/lib_libvserver_a-syscall_unsetmapping.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_unsetmapping.obj `if test -f 'lib/syscall_unsetmapping.c'; then $(CYGPATH_W) 'lib/syscall_unsetmapping.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_unsetmapping.c'; fi` + lib/lib_libvserver_a-syscall_schedinfo.o: lib/syscall_schedinfo.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_schedinfo.o -MD -MP -MF lib/$(DEPDIR)/lib_libvserver_a-syscall_schedinfo.Tpo -c -o lib/lib_libvserver_a-syscall_schedinfo.o `test -f 'lib/syscall_schedinfo.c' || echo '$(srcdir)/'`lib/syscall_schedinfo.c @am__fastdepCC_TRUE@ mv -f lib/$(DEPDIR)/lib_libvserver_a-syscall_schedinfo.Tpo lib/$(DEPDIR)/lib_libvserver_a-syscall_schedinfo.Po @@ -6616,6 +6818,34 @@ lib/lib_libvserver_a-syscall_tasktag.obj: lib/syscall_tasktag.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_tasktag.obj `if test -f 'lib/syscall_tasktag.c'; then $(CYGPATH_W) 'lib/syscall_tasktag.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_tasktag.c'; fi` +lib/lib_libvserver_a-syscall_getbadness.o: lib/syscall_getbadness.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getbadness.o -MD -MP -MF lib/$(DEPDIR)/lib_libvserver_a-syscall_getbadness.Tpo -c -o lib/lib_libvserver_a-syscall_getbadness.o `test -f 'lib/syscall_getbadness.c' || echo '$(srcdir)/'`lib/syscall_getbadness.c +@am__fastdepCC_TRUE@ mv -f lib/$(DEPDIR)/lib_libvserver_a-syscall_getbadness.Tpo lib/$(DEPDIR)/lib_libvserver_a-syscall_getbadness.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib/syscall_getbadness.c' object='lib/lib_libvserver_a-syscall_getbadness.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getbadness.o `test -f 'lib/syscall_getbadness.c' || echo '$(srcdir)/'`lib/syscall_getbadness.c + +lib/lib_libvserver_a-syscall_getbadness.obj: lib/syscall_getbadness.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getbadness.obj -MD -MP -MF lib/$(DEPDIR)/lib_libvserver_a-syscall_getbadness.Tpo -c -o lib/lib_libvserver_a-syscall_getbadness.obj `if test -f 'lib/syscall_getbadness.c'; then $(CYGPATH_W) 'lib/syscall_getbadness.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getbadness.c'; fi` +@am__fastdepCC_TRUE@ mv -f lib/$(DEPDIR)/lib_libvserver_a-syscall_getbadness.Tpo lib/$(DEPDIR)/lib_libvserver_a-syscall_getbadness.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib/syscall_getbadness.c' object='lib/lib_libvserver_a-syscall_getbadness.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getbadness.obj `if test -f 'lib/syscall_getbadness.c'; then $(CYGPATH_W) 'lib/syscall_getbadness.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getbadness.c'; fi` + +lib/lib_libvserver_a-syscall_setbadness.o: lib/syscall_setbadness.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setbadness.o -MD -MP -MF lib/$(DEPDIR)/lib_libvserver_a-syscall_setbadness.Tpo -c -o lib/lib_libvserver_a-syscall_setbadness.o `test -f 'lib/syscall_setbadness.c' || echo '$(srcdir)/'`lib/syscall_setbadness.c +@am__fastdepCC_TRUE@ mv -f lib/$(DEPDIR)/lib_libvserver_a-syscall_setbadness.Tpo lib/$(DEPDIR)/lib_libvserver_a-syscall_setbadness.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib/syscall_setbadness.c' object='lib/lib_libvserver_a-syscall_setbadness.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setbadness.o `test -f 'lib/syscall_setbadness.c' || echo '$(srcdir)/'`lib/syscall_setbadness.c + +lib/lib_libvserver_a-syscall_setbadness.obj: lib/syscall_setbadness.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setbadness.obj -MD -MP -MF lib/$(DEPDIR)/lib_libvserver_a-syscall_setbadness.Tpo -c -o lib/lib_libvserver_a-syscall_setbadness.obj `if test -f 'lib/syscall_setbadness.c'; then $(CYGPATH_W) 'lib/syscall_setbadness.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setbadness.c'; fi` +@am__fastdepCC_TRUE@ mv -f lib/$(DEPDIR)/lib_libvserver_a-syscall_setbadness.Tpo lib/$(DEPDIR)/lib_libvserver_a-syscall_setbadness.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib/syscall_setbadness.c' object='lib/lib_libvserver_a-syscall_setbadness.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setbadness.obj `if test -f 'lib/syscall_setbadness.c'; then $(CYGPATH_W) 'lib/syscall_setbadness.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setbadness.c'; fi` + ensc_fmt/lib_libvserver_a-fmt-32.o: ensc_fmt/fmt-32.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_a-fmt-32.o -MD -MP -MF ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-32.Tpo -c -o ensc_fmt/lib_libvserver_a-fmt-32.o `test -f 'ensc_fmt/fmt-32.c' || echo '$(srcdir)/'`ensc_fmt/fmt-32.c @am__fastdepCC_TRUE@ mv -f ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-32.Tpo ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-32.Po @@ -8919,6 +9149,13 @@ lib/lib_libvserver_la-syscall_setmapping.lo: lib/syscall_setmapping.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_setmapping.lo `test -f 'lib/syscall_setmapping.c' || echo '$(srcdir)/'`lib/syscall_setmapping.c +lib/lib_libvserver_la-syscall_unsetmapping.lo: lib/syscall_unsetmapping.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_unsetmapping.lo -MD -MP -MF lib/$(DEPDIR)/lib_libvserver_la-syscall_unsetmapping.Tpo -c -o lib/lib_libvserver_la-syscall_unsetmapping.lo `test -f 'lib/syscall_unsetmapping.c' || echo '$(srcdir)/'`lib/syscall_unsetmapping.c +@am__fastdepCC_TRUE@ mv -f lib/$(DEPDIR)/lib_libvserver_la-syscall_unsetmapping.Tpo lib/$(DEPDIR)/lib_libvserver_la-syscall_unsetmapping.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib/syscall_unsetmapping.c' object='lib/lib_libvserver_la-syscall_unsetmapping.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_unsetmapping.lo `test -f 'lib/syscall_unsetmapping.c' || echo '$(srcdir)/'`lib/syscall_unsetmapping.c + lib/lib_libvserver_la-syscall_schedinfo.lo: lib/syscall_schedinfo.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_schedinfo.lo -MD -MP -MF lib/$(DEPDIR)/lib_libvserver_la-syscall_schedinfo.Tpo -c -o lib/lib_libvserver_la-syscall_schedinfo.lo `test -f 'lib/syscall_schedinfo.c' || echo '$(srcdir)/'`lib/syscall_schedinfo.c @am__fastdepCC_TRUE@ mv -f lib/$(DEPDIR)/lib_libvserver_la-syscall_schedinfo.Tpo lib/$(DEPDIR)/lib_libvserver_la-syscall_schedinfo.Plo @@ -8968,6 +9205,20 @@ lib/lib_libvserver_la-syscall_tasktag.lo: lib/syscall_tasktag.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_tasktag.lo `test -f 'lib/syscall_tasktag.c' || echo '$(srcdir)/'`lib/syscall_tasktag.c +lib/lib_libvserver_la-syscall_getbadness.lo: lib/syscall_getbadness.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_getbadness.lo -MD -MP -MF lib/$(DEPDIR)/lib_libvserver_la-syscall_getbadness.Tpo -c -o lib/lib_libvserver_la-syscall_getbadness.lo `test -f 'lib/syscall_getbadness.c' || echo '$(srcdir)/'`lib/syscall_getbadness.c +@am__fastdepCC_TRUE@ mv -f lib/$(DEPDIR)/lib_libvserver_la-syscall_getbadness.Tpo lib/$(DEPDIR)/lib_libvserver_la-syscall_getbadness.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib/syscall_getbadness.c' object='lib/lib_libvserver_la-syscall_getbadness.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_getbadness.lo `test -f 'lib/syscall_getbadness.c' || echo '$(srcdir)/'`lib/syscall_getbadness.c + +lib/lib_libvserver_la-syscall_setbadness.lo: lib/syscall_setbadness.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_setbadness.lo -MD -MP -MF lib/$(DEPDIR)/lib_libvserver_la-syscall_setbadness.Tpo -c -o lib/lib_libvserver_la-syscall_setbadness.lo `test -f 'lib/syscall_setbadness.c' || echo '$(srcdir)/'`lib/syscall_setbadness.c +@am__fastdepCC_TRUE@ mv -f lib/$(DEPDIR)/lib_libvserver_la-syscall_setbadness.Tpo lib/$(DEPDIR)/lib_libvserver_la-syscall_setbadness.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib/syscall_setbadness.c' object='lib/lib_libvserver_la-syscall_setbadness.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_setbadness.lo `test -f 'lib/syscall_setbadness.c' || echo '$(srcdir)/'`lib/syscall_setbadness.c + ensc_fmt/lib_libvserver_la-fmt-32.lo: ensc_fmt/fmt-32.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_la-fmt-32.lo -MD -MP -MF ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-32.Tpo -c -o ensc_fmt/lib_libvserver_la-fmt-32.lo `test -f 'ensc_fmt/fmt-32.c' || echo '$(srcdir)/'`ensc_fmt/fmt-32.c @am__fastdepCC_TRUE@ mv -f ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-32.Tpo ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-32.Plo @@ -9066,6 +9317,34 @@ lib/testsuite/lib_testsuite_personality-personality.obj: lib/testsuite/personali @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_personality_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/testsuite/lib_testsuite_personality-personality.obj `if test -f 'lib/testsuite/personality.c'; then $(CYGPATH_W) 'lib/testsuite/personality.c'; else $(CYGPATH_W) '$(srcdir)/lib/testsuite/personality.c'; fi` +lib_internal/testsuite/lib_internal_testsuite_crypto-crypto.o: lib_internal/testsuite/crypto.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_internal_testsuite_crypto_CFLAGS) $(CFLAGS) -MT lib_internal/testsuite/lib_internal_testsuite_crypto-crypto.o -MD -MP -MF lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_crypto-crypto.Tpo -c -o lib_internal/testsuite/lib_internal_testsuite_crypto-crypto.o `test -f 'lib_internal/testsuite/crypto.c' || echo '$(srcdir)/'`lib_internal/testsuite/crypto.c +@am__fastdepCC_TRUE@ mv -f lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_crypto-crypto.Tpo lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_crypto-crypto.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib_internal/testsuite/crypto.c' object='lib_internal/testsuite/lib_internal_testsuite_crypto-crypto.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_internal_testsuite_crypto_CFLAGS) $(CFLAGS) -c -o lib_internal/testsuite/lib_internal_testsuite_crypto-crypto.o `test -f 'lib_internal/testsuite/crypto.c' || echo '$(srcdir)/'`lib_internal/testsuite/crypto.c + +lib_internal/testsuite/lib_internal_testsuite_crypto-crypto.obj: lib_internal/testsuite/crypto.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_internal_testsuite_crypto_CFLAGS) $(CFLAGS) -MT lib_internal/testsuite/lib_internal_testsuite_crypto-crypto.obj -MD -MP -MF lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_crypto-crypto.Tpo -c -o lib_internal/testsuite/lib_internal_testsuite_crypto-crypto.obj `if test -f 'lib_internal/testsuite/crypto.c'; then $(CYGPATH_W) 'lib_internal/testsuite/crypto.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/testsuite/crypto.c'; fi` +@am__fastdepCC_TRUE@ mv -f lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_crypto-crypto.Tpo lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_crypto-crypto.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib_internal/testsuite/crypto.c' object='lib_internal/testsuite/lib_internal_testsuite_crypto-crypto.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_internal_testsuite_crypto_CFLAGS) $(CFLAGS) -c -o lib_internal/testsuite/lib_internal_testsuite_crypto-crypto.obj `if test -f 'lib_internal/testsuite/crypto.c'; then $(CYGPATH_W) 'lib_internal/testsuite/crypto.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/testsuite/crypto.c'; fi` + +lib_internal/testsuite/lib_internal_testsuite_crypto_speed-crypto-speed.o: lib_internal/testsuite/crypto-speed.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_internal_testsuite_crypto_speed_CFLAGS) $(CFLAGS) -MT lib_internal/testsuite/lib_internal_testsuite_crypto_speed-crypto-speed.o -MD -MP -MF lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_crypto_speed-crypto-speed.Tpo -c -o lib_internal/testsuite/lib_internal_testsuite_crypto_speed-crypto-speed.o `test -f 'lib_internal/testsuite/crypto-speed.c' || echo '$(srcdir)/'`lib_internal/testsuite/crypto-speed.c +@am__fastdepCC_TRUE@ mv -f lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_crypto_speed-crypto-speed.Tpo lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_crypto_speed-crypto-speed.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib_internal/testsuite/crypto-speed.c' object='lib_internal/testsuite/lib_internal_testsuite_crypto_speed-crypto-speed.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_internal_testsuite_crypto_speed_CFLAGS) $(CFLAGS) -c -o lib_internal/testsuite/lib_internal_testsuite_crypto_speed-crypto-speed.o `test -f 'lib_internal/testsuite/crypto-speed.c' || echo '$(srcdir)/'`lib_internal/testsuite/crypto-speed.c + +lib_internal/testsuite/lib_internal_testsuite_crypto_speed-crypto-speed.obj: lib_internal/testsuite/crypto-speed.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_internal_testsuite_crypto_speed_CFLAGS) $(CFLAGS) -MT lib_internal/testsuite/lib_internal_testsuite_crypto_speed-crypto-speed.obj -MD -MP -MF lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_crypto_speed-crypto-speed.Tpo -c -o lib_internal/testsuite/lib_internal_testsuite_crypto_speed-crypto-speed.obj `if test -f 'lib_internal/testsuite/crypto-speed.c'; then $(CYGPATH_W) 'lib_internal/testsuite/crypto-speed.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/testsuite/crypto-speed.c'; fi` +@am__fastdepCC_TRUE@ mv -f lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_crypto_speed-crypto-speed.Tpo lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_crypto_speed-crypto-speed.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib_internal/testsuite/crypto-speed.c' object='lib_internal/testsuite/lib_internal_testsuite_crypto_speed-crypto-speed.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_internal_testsuite_crypto_speed_CFLAGS) $(CFLAGS) -c -o lib_internal/testsuite/lib_internal_testsuite_crypto_speed-crypto-speed.obj `if test -f 'lib_internal/testsuite/crypto-speed.c'; then $(CYGPATH_W) 'lib_internal/testsuite/crypto-speed.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/testsuite/crypto-speed.c'; fi` + lib_internal/testsuite/lib_internal_testsuite_isnumber-isnumber.o: lib_internal/testsuite/isnumber.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_testsuite_isnumber_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/testsuite/lib_internal_testsuite_isnumber-isnumber.o -MD -MP -MF lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_isnumber-isnumber.Tpo -c -o lib_internal/testsuite/lib_internal_testsuite_isnumber-isnumber.o `test -f 'lib_internal/testsuite/isnumber.c' || echo '$(srcdir)/'`lib_internal/testsuite/isnumber.c @am__fastdepCC_TRUE@ mv -f lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_isnumber-isnumber.Tpo lib_internal/testsuite/$(DEPDIR)/lib_internal_testsuite_isnumber-isnumber.Po @@ -9150,6 +9429,34 @@ lib_internal/testsuite/lib_internal_testsuite_sigbus_gnu-sigbus.obj: lib_interna @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_testsuite_sigbus_gnu_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/testsuite/lib_internal_testsuite_sigbus_gnu-sigbus.obj `if test -f 'lib_internal/testsuite/sigbus.c'; then $(CYGPATH_W) 'lib_internal/testsuite/sigbus.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/testsuite/sigbus.c'; fi` +src/testsuite/src_testsuite_hashcalc-hashcalc.o: src/testsuite/hashcalc.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_testsuite_hashcalc_CFLAGS) $(CFLAGS) -MT src/testsuite/src_testsuite_hashcalc-hashcalc.o -MD -MP -MF src/testsuite/$(DEPDIR)/src_testsuite_hashcalc-hashcalc.Tpo -c -o src/testsuite/src_testsuite_hashcalc-hashcalc.o `test -f 'src/testsuite/hashcalc.c' || echo '$(srcdir)/'`src/testsuite/hashcalc.c +@am__fastdepCC_TRUE@ mv -f src/testsuite/$(DEPDIR)/src_testsuite_hashcalc-hashcalc.Tpo src/testsuite/$(DEPDIR)/src_testsuite_hashcalc-hashcalc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/testsuite/hashcalc.c' object='src/testsuite/src_testsuite_hashcalc-hashcalc.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_testsuite_hashcalc_CFLAGS) $(CFLAGS) -c -o src/testsuite/src_testsuite_hashcalc-hashcalc.o `test -f 'src/testsuite/hashcalc.c' || echo '$(srcdir)/'`src/testsuite/hashcalc.c + +src/testsuite/src_testsuite_hashcalc-hashcalc.obj: src/testsuite/hashcalc.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_testsuite_hashcalc_CFLAGS) $(CFLAGS) -MT src/testsuite/src_testsuite_hashcalc-hashcalc.obj -MD -MP -MF src/testsuite/$(DEPDIR)/src_testsuite_hashcalc-hashcalc.Tpo -c -o src/testsuite/src_testsuite_hashcalc-hashcalc.obj `if test -f 'src/testsuite/hashcalc.c'; then $(CYGPATH_W) 'src/testsuite/hashcalc.c'; else $(CYGPATH_W) '$(srcdir)/src/testsuite/hashcalc.c'; fi` +@am__fastdepCC_TRUE@ mv -f src/testsuite/$(DEPDIR)/src_testsuite_hashcalc-hashcalc.Tpo src/testsuite/$(DEPDIR)/src_testsuite_hashcalc-hashcalc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/testsuite/hashcalc.c' object='src/testsuite/src_testsuite_hashcalc-hashcalc.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_testsuite_hashcalc_CFLAGS) $(CFLAGS) -c -o src/testsuite/src_testsuite_hashcalc-hashcalc.obj `if test -f 'src/testsuite/hashcalc.c'; then $(CYGPATH_W) 'src/testsuite/hashcalc.c'; else $(CYGPATH_W) '$(srcdir)/src/testsuite/hashcalc.c'; fi` + +src/testsuite/src_testsuite_hashcalc_plain-hashcalc-plain.o: src/testsuite/hashcalc-plain.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_testsuite_hashcalc_plain_CFLAGS) $(CFLAGS) -MT src/testsuite/src_testsuite_hashcalc_plain-hashcalc-plain.o -MD -MP -MF src/testsuite/$(DEPDIR)/src_testsuite_hashcalc_plain-hashcalc-plain.Tpo -c -o src/testsuite/src_testsuite_hashcalc_plain-hashcalc-plain.o `test -f 'src/testsuite/hashcalc-plain.c' || echo '$(srcdir)/'`src/testsuite/hashcalc-plain.c +@am__fastdepCC_TRUE@ mv -f src/testsuite/$(DEPDIR)/src_testsuite_hashcalc_plain-hashcalc-plain.Tpo src/testsuite/$(DEPDIR)/src_testsuite_hashcalc_plain-hashcalc-plain.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/testsuite/hashcalc-plain.c' object='src/testsuite/src_testsuite_hashcalc_plain-hashcalc-plain.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_testsuite_hashcalc_plain_CFLAGS) $(CFLAGS) -c -o src/testsuite/src_testsuite_hashcalc_plain-hashcalc-plain.o `test -f 'src/testsuite/hashcalc-plain.c' || echo '$(srcdir)/'`src/testsuite/hashcalc-plain.c + +src/testsuite/src_testsuite_hashcalc_plain-hashcalc-plain.obj: src/testsuite/hashcalc-plain.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_testsuite_hashcalc_plain_CFLAGS) $(CFLAGS) -MT src/testsuite/src_testsuite_hashcalc_plain-hashcalc-plain.obj -MD -MP -MF src/testsuite/$(DEPDIR)/src_testsuite_hashcalc_plain-hashcalc-plain.Tpo -c -o src/testsuite/src_testsuite_hashcalc_plain-hashcalc-plain.obj `if test -f 'src/testsuite/hashcalc-plain.c'; then $(CYGPATH_W) 'src/testsuite/hashcalc-plain.c'; else $(CYGPATH_W) '$(srcdir)/src/testsuite/hashcalc-plain.c'; fi` +@am__fastdepCC_TRUE@ mv -f src/testsuite/$(DEPDIR)/src_testsuite_hashcalc_plain-hashcalc-plain.Tpo src/testsuite/$(DEPDIR)/src_testsuite_hashcalc_plain-hashcalc-plain.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/testsuite/hashcalc-plain.c' object='src/testsuite/src_testsuite_hashcalc_plain-hashcalc-plain.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_testsuite_hashcalc_plain_CFLAGS) $(CFLAGS) -c -o src/testsuite/src_testsuite_hashcalc_plain-hashcalc-plain.obj `if test -f 'src/testsuite/hashcalc-plain.c'; then $(CYGPATH_W) 'src/testsuite/hashcalc-plain.c'; else $(CYGPATH_W) '$(srcdir)/src/testsuite/hashcalc-plain.c'; fi` + src/testsuite/src_testsuite_vunify_functest-vunify-functest.o: src/testsuite/vunify-functest.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testsuite_vunify_functest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/testsuite/src_testsuite_vunify_functest-vunify-functest.o -MD -MP -MF src/testsuite/$(DEPDIR)/src_testsuite_vunify_functest-vunify-functest.Tpo -c -o src/testsuite/src_testsuite_vunify_functest-vunify-functest.o `test -f 'src/testsuite/vunify-functest.c' || echo '$(srcdir)/'`src/testsuite/vunify-functest.c @am__fastdepCC_TRUE@ mv -f src/testsuite/$(DEPDIR)/src_testsuite_vunify_functest-vunify-functest.Tpo src/testsuite/$(DEPDIR)/src_testsuite_vunify_functest-vunify-functest.Po @@ -9164,6 +9471,20 @@ src/testsuite/src_testsuite_vunify_functest-vunify-functest.obj: src/testsuite/v @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testsuite_vunify_functest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/testsuite/src_testsuite_vunify_functest-vunify-functest.obj `if test -f 'src/testsuite/vunify-functest.c'; then $(CYGPATH_W) 'src/testsuite/vunify-functest.c'; else $(CYGPATH_W) '$(srcdir)/src/testsuite/vunify-functest.c'; fi` +src/src_vhashify-vhashify.o: src/vhashify.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_vhashify_CFLAGS) $(CFLAGS) -MT src/src_vhashify-vhashify.o -MD -MP -MF src/$(DEPDIR)/src_vhashify-vhashify.Tpo -c -o src/src_vhashify-vhashify.o `test -f 'src/vhashify.c' || echo '$(srcdir)/'`src/vhashify.c +@am__fastdepCC_TRUE@ mv -f src/$(DEPDIR)/src_vhashify-vhashify.Tpo src/$(DEPDIR)/src_vhashify-vhashify.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/vhashify.c' object='src/src_vhashify-vhashify.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_vhashify_CFLAGS) $(CFLAGS) -c -o src/src_vhashify-vhashify.o `test -f 'src/vhashify.c' || echo '$(srcdir)/'`src/vhashify.c + +src/src_vhashify-vhashify.obj: src/vhashify.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_vhashify_CFLAGS) $(CFLAGS) -MT src/src_vhashify-vhashify.obj -MD -MP -MF src/$(DEPDIR)/src_vhashify-vhashify.Tpo -c -o src/src_vhashify-vhashify.obj `if test -f 'src/vhashify.c'; then $(CYGPATH_W) 'src/vhashify.c'; else $(CYGPATH_W) '$(srcdir)/src/vhashify.c'; fi` +@am__fastdepCC_TRUE@ mv -f src/$(DEPDIR)/src_vhashify-vhashify.Tpo src/$(DEPDIR)/src_vhashify-vhashify.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/vhashify.c' object='src/src_vhashify-vhashify.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_vhashify_CFLAGS) $(CFLAGS) -c -o src/src_vhashify-vhashify.obj `if test -f 'src/vhashify.c'; then $(CYGPATH_W) 'src/vhashify.c'; else $(CYGPATH_W) '$(srcdir)/src/vhashify.c'; fi` + src/src_vkill-vkill.o: src/vkill.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_vkill_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/src_vkill-vkill.o -MD -MP -MF src/$(DEPDIR)/src_vkill-vkill.Tpo -c -o src/src_vkill-vkill.o `test -f 'src/vkill.c' || echo '$(srcdir)/'`src/vkill.c @am__fastdepCC_TRUE@ mv -f src/$(DEPDIR)/src_vkill-vkill.Tpo src/$(DEPDIR)/src_vkill-vkill.Po @@ -9949,6 +10270,8 @@ doc_doc: $(doc_gen_DOCS) @HAVE_XSLTPROC_TRUE@@HAVE_XSLTP_FALSE@ $(XSLTPROC) $(XSLT_FLAGS) $(XSLT_AMFLAGS) -o '$@.tmp' "$(STYLESHEET)" "$<" @HAVE_XSLTPROC_TRUE@@HAVE_XSLTP_FALSE@ @mv -f '$@.tmp' '$@' +man/vserver-build.8: man/.vserver-build.8.pathsubst.stamp + scripts/util-vserver-vars: scripts/.util-vserver-vars.pathsubst.stamp scripts/legacy/vps: scripts/legacy/.vps.pathsubst.stamp diff --git a/NEWS b/NEWS index 84caa2e..84c73b5 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,51 @@ +version 0.30.215 +================ + + - added support for using libnss instead of beecrypt for + vhashify's hash calculation. libnss has bad SHA1 performance on + i386, but is a) maintained and b) gives better performance with + all other hashes and on x86_64. + + - added tunctl, a small program to setup tun/tap interfaces, with + support in the configuration. + + - vattribute and nattribute now support a --get operation, which + parses the flags and capabilities into a human-readable form. + + - vspace supports all the spaces currently available. + + - vmemctrl controls the OOM bias of context. + + - dynamic contexts are unbroken. + + - hopefully all rpm-fake races have been fixed. + + - flock has been replaced by lockf, which works on NFS. + + - the clone build method now supports exclude lists. + + - vmount handles mounting into a guest. + + - various fixes for the Gentoo-scripts, thanks to Benedikt Böhm. + + - support for yum's persistdir has been added. + + - per-guest device maps are now supported. + + - vserver ... build now sets the barrier on the parent directory. + + - fsck is now supported for the guest's fstab. + + - symlinks are now handled on all levels in namespace cleanup. + + - the debootstrap build method now supports debootstrap 1.0.8. + + - a documentation update, thanks to Micah Anderson. + + - use numeric uids/gids for the template build method. + + - add support for the alpine and f8 distributions. + version 0.30.214 ================ - patches for yum-3.2. diff --git a/aclocal.m4 b/aclocal.m4 index 14188a7..6130037 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -6412,6 +6412,164 @@ AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ]) +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# +# Copyright © 2004 Scott James Remnant . +# +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi + +fi[]dnl +])# PKG_PROG_PKG_CONFIG + +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# Check to see whether a particular set of modules exists. Similar +# to PKG_CHECK_MODULES(), but does not set variables or print errors. +# +# +# Similar to PKG_CHECK_MODULES, make sure that the first instance of +# this or PKG_CHECK_MODULES is called, or make sure to call +# PKG_CHECK_EXISTS manually +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_ifval([$2], [$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + + +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- +m4_define([_PKG_CONFIG], +[if test -n "$PKG_CONFIG"; then + if test -n "$$1"; then + pkg_cv_[]$1="$$1" + else + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], + [pkg_failed=yes]) + fi +else + pkg_failed=untried +fi[]dnl +])# _PKG_CONFIG + +# _PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])# _PKG_SHORT_ERRORS_SUPPORTED + + +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) +# +# +# Note that if there is a possibility the first call to +# PKG_CHECK_MODULES might not happen, you should be sure to include an +# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +# +# +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + ifelse([$4], , [AC_MSG_ERROR(dnl +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT +])], + [AC_MSG_RESULT([no]) + $4]) +elif test $pkg_failed = untried; then + ifelse([$4], , [AC_MSG_FAILURE(dnl +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])], + [$4]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + ifelse([$3], , :, [$3]) +fi[]dnl +])# PKG_CHECK_MODULES + # Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation diff --git a/config.h.in b/config.h.in index 5839832..ad2998d 100644 --- a/config.h.in +++ b/config.h.in @@ -1,5 +1,8 @@ /* config.h.in. Generated from configure.ac by autoheader. */ +/* Used crypto API */ +#undef ENSC_CRYPTO_API + /* Define to 1 if dietlibc supports C99 */ #undef ENSC_DIETLIBC_C99 diff --git a/configure b/configure index eaf02e1..762be17 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for util-vserver 0.30.214. +# Generated by GNU Autoconf 2.61 for util-vserver 0.30.215. # # Report bugs to . # @@ -728,8 +728,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='util-vserver' PACKAGE_TARNAME='util-vserver' -PACKAGE_VERSION='0.30.214' -PACKAGE_STRING='util-vserver 0.30.214' +PACKAGE_VERSION='0.30.215' +PACKAGE_STRING='util-vserver 0.30.215' PACKAGE_BUGREPORT='vserver@list.linux-vserver.org' ac_unique_file="src/capchroot.c" @@ -863,6 +863,7 @@ CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE LN_S +PKG_CONFIG ENSC_HAVE_CXX_COMPILER_TRUE ENSC_HAVE_CXX_COMPILER_FALSE ENSC_HAVE_C99_COMPILER_TRUE @@ -909,6 +910,7 @@ CPIO RESTORE RSYNC STRACE +FSCK DOXYGEN XSLTP XSLTPROC @@ -949,6 +951,14 @@ ENSC_HAVE_BEECRYPT_TRUE ENSC_HAVE_BEECRYPT_FALSE ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE +NSS_CFLAGS +NSS_LIBS +ENSC_HAVE_CRYPTO_TRUE +ENSC_HAVE_CRYPTO_FALSE +ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE +ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE +ENSC_CRYPTO_CFLAGS +ENSC_CRYPTO_LIB HAVE_GENTOO_INIT_TRUE HAVE_GENTOO_INIT_FALSE HAVE_SYSV_INIT_TRUE @@ -967,12 +977,15 @@ CPPFLAGS CCC CC CFLAGS +PKG_CONFIG CPP DIET DIETFLAGS CXXCPP F77 -FFLAGS' +FFLAGS +NSS_CFLAGS +NSS_LIBS' # Initialize some variables set by options. @@ -1475,7 +1488,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures util-vserver 0.30.214 to adapt to many kinds of systems. +\`configure' configures util-vserver 0.30.215 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1545,7 +1558,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of util-vserver 0.30.214:";; + short | recursive ) echo "Configuration of util-vserver 0.30.215:";; esac cat <<\_ACEOF @@ -1595,6 +1608,8 @@ Optional Packages: both] --with-tags[=TAGS] include additional configurations [automatic] --with-vrootdir=DIR place vservers under DIR (default: /vservers) + --with-crypto-api=API select crypto api to be used; possible values are + `none', `nss', `beecrypt', `auto' (default:auto) --with-initscripts=TYPE force host initscripts; valid values are 'gentoo' and 'sysv' (default: guess) @@ -1608,12 +1623,15 @@ Some influential environment variables: you have headers in a nonstandard directory CC C compiler command CFLAGS C compiler flags + PKG_CONFIG path to pkg-config utility CPP C preprocessor DIET The 'diet' wrapper (default: diet) DIETFLAGS Flags passed to the 'diet' wrapper (default: -O) CXXCPP C++ preprocessor F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags + NSS_CFLAGS C compiler flags for NSS, overriding pkg-config + NSS_LIBS linker flags for NSS, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -1679,7 +1697,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -util-vserver configure 0.30.214 +util-vserver configure 0.30.215 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1693,7 +1711,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by util-vserver $as_me 0.30.214, which was +It was created by util-vserver $as_me 0.30.215, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ @@ -2387,7 +2405,7 @@ fi # Define the identity of the package. PACKAGE='util-vserver' - VERSION='0.30.214' + VERSION='0.30.215' cat >>confdefs.h <<_ACEOF @@ -4424,6 +4442,126 @@ fi +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_PKG_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 +echo "${ECHO_T}$PKG_CONFIG" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 +echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 +echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + PKG_CONFIG="" + fi + +fi + + { echo "$as_me:$LINENO: checking whether $CXX is a C++ compiler" >&5 @@ -8197,6 +8335,92 @@ Can not find the 'strace' tool within '${ensc_searchpath:-$PATH}'. + if test -z ""; then + rq=true + else + rq=false + fi + + if $rq; then + ensc_dflt= + else + ensc_dflt="" + fi + + for ac_prog in fsck +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_FSCK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $FSCK in + [\\/]* | ?:[\\/]*) + ac_cv_path_FSCK="$FSCK" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $ensc_searchpath +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_FSCK="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +FSCK=$ac_cv_path_FSCK +if test -n "$FSCK"; then + { echo "$as_me:$LINENO: result: $FSCK" >&5 +echo "${ECHO_T}$FSCK" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$FSCK" && break +done +test -n "$FSCK" || FSCK="$ensc_dflt" + + + if test -z "${FSCK}" && $rq; then + if test -z ""; then + { { echo "$as_me:$LINENO: error: Can not find the 'fsck' tool within '${ensc_searchpath:-$PATH}'." >&5 +echo "$as_me: error: Can not find the 'fsck' tool within '${ensc_searchpath:-$PATH}'." >&2;} + { (exit 1); exit 1; }; } + else + { { echo "$as_me:$LINENO: error: +Can not find the 'fsck' tool within '${ensc_searchpath:-$PATH}'. +" >&5 +echo "$as_me: error: +Can not find the 'fsck' tool within '${ensc_searchpath:-$PATH}'. +" >&2;} + { (exit 1); exit 1; }; } + fi + fi + + if test -e "${FSCK}"; then + FSCK=`readlink -f "${FSCK}"` + fi + + test "${FSCK}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'FSCK'@!${FSCK}!g;" + + test "${FSCK}" + + + + if test -z ":"; then rq=true @@ -12332,7 +12556,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 12335 "configure"' > conftest.$ac_ext + echo '#line 12559 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -14360,11 +14584,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14363: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14587: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:14367: \$? = $ac_status" >&5 + echo "$as_me:14591: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -14628,11 +14852,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14631: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14855: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:14635: \$? = $ac_status" >&5 + echo "$as_me:14859: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -14732,11 +14956,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14735: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14959: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:14739: \$? = $ac_status" >&5 + echo "$as_me:14963: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -16197,7 +16421,7 @@ linux*) libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) - echo '#line 16200 "configure"' > conftest.$ac_ext + echo '#line 16424 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -17061,7 +17285,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <&5) + (eval echo "\"\$as_me:19724: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:19504: \$? = $ac_status" >&5 + echo "$as_me:19728: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -19601,11 +19825,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:19604: $lt_compile\"" >&5) + (eval echo "\"\$as_me:19828: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:19608: \$? = $ac_status" >&5 + echo "$as_me:19832: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -20137,7 +20361,7 @@ linux*) libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) - echo '#line 20140 "configure"' > conftest.$ac_ext + echo '#line 20364 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -21192,11 +21416,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:21195: $lt_compile\"" >&5) + (eval echo "\"\$as_me:21419: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:21199: \$? = $ac_status" >&5 + echo "$as_me:21423: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -21296,11 +21520,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:21299: $lt_compile\"" >&5) + (eval echo "\"\$as_me:21523: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:21303: \$? = $ac_status" >&5 + echo "$as_me:21527: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -22741,7 +22965,7 @@ linux*) libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) - echo '#line 22744 "configure"' > conftest.$ac_ext + echo '#line 22968 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -23515,11 +23739,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:23518: $lt_compile\"" >&5) + (eval echo "\"\$as_me:23742: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:23522: \$? = $ac_status" >&5 + echo "$as_me:23746: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -23783,11 +24007,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:23786: $lt_compile\"" >&5) + (eval echo "\"\$as_me:24010: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:23790: \$? = $ac_status" >&5 + echo "$as_me:24014: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -23887,11 +24111,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:23890: $lt_compile\"" >&5) + (eval echo "\"\$as_me:24114: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:23894: \$? = $ac_status" >&5 + echo "$as_me:24118: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -25352,7 +25576,7 @@ linux*) libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) - echo '#line 25355 "configure"' > conftest.$ac_ext + echo '#line 25579 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -27926,6 +28150,28 @@ fi fi +{ echo "$as_me:$LINENO: checking for used crypto API" >&5 +echo $ECHO_N "checking for used crypto API... $ECHO_C" >&6; } + +# Check whether --with-crypto-api was given. +if test "${with_crypto_api+set}" = set; then + withval=$with_crypto_api; case $withval in + (none|nss|beecrypt|auto) ensc_crypto_api=$withval;; + (*) { { echo "$as_me:$LINENO: error: invalid initscripts value, only gentoo and sysv are supported" >&5 +echo "$as_me: error: invalid initscripts value, only gentoo and sysv are supported" >&2;} + { (exit 1); exit 1; }; };; + esac +else + ensc_crypto_api=auto +fi + +{ echo "$as_me:$LINENO: result: $ensc_crypto_api" >&5 +echo "${ECHO_T}$ensc_crypto_api" >&6; } + + + +case $ensc_crypto_api in +(auto|beecrypt) if test x"$ensc_cv_c99_c99compiler" = xyes; then ensc_have_beecrypt=yes @@ -28138,22 +28384,23 @@ else fi fi - - if test x"$ensc_have_beecrypt" != xyes; then - { echo "$as_me:$LINENO: WARNING: -**** -**** 'beecrypt' could not be found; -**** this will disable the build of 'vhashify' -****" >&5 -echo "$as_me: WARNING: -**** -**** 'beecrypt' could not be found; -**** this will disable the build of 'vhashify' -****" >&2;} - fi else ensc_have_beecrypt=no -fi +fi;; +esac + +case $ensc_crypto_api in +(auto) if test x"$ensc_have_beecrypt" = xyes; then + { echo "$as_me:$LINENO: using beecrypt as crypto api" >&5 +echo "$as_me: using beecrypt as crypto api" >&6;} + ensc_crypto_api=beecrypt + fi;; +(beecrypt) if test x"$ensc_have_beecrypt" != xyes; then + { { echo "$as_me:$LINENO: error: beecrypt crypto api not found" >&5 +echo "$as_me: error: beecrypt crypto api not found" >&2;} + { (exit 1); exit 1; }; } + fi;; +esac if test x"$ensc_have_beecrypt" = xyes; then ENSC_HAVE_BEECRYPT_TRUE= @@ -28173,6 +28420,259 @@ fi + +case $ensc_crypto_api in +(nss) +pkg_failed=no +{ echo "$as_me:$LINENO: checking for NSS" >&5 +echo $ECHO_N "checking for NSS... $ECHO_C" >&6; } + +if test -n "$PKG_CONFIG"; then + if test -n "$NSS_CFLAGS"; then + pkg_cv_NSS_CFLAGS="$NSS_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"nss\"") >&5 + ($PKG_CONFIG --exists --print-errors "nss") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_NSS_CFLAGS=`$PKG_CONFIG --cflags "nss" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi +if test -n "$PKG_CONFIG"; then + if test -n "$NSS_LIBS"; then + pkg_cv_NSS_LIBS="$NSS_LIBS" + else + if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"nss\"") >&5 + ($PKG_CONFIG --exists --print-errors "nss") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_NSS_LIBS=`$PKG_CONFIG --libs "nss" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + NSS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "nss"` + else + NSS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "nss"` + fi + # Put the nasty error message in config.log where it belongs + echo "$NSS_PKG_ERRORS" >&5 + + { { echo "$as_me:$LINENO: error: Package requirements (nss) were not met: + +$NSS_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables NSS_CFLAGS +and NSS_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&5 +echo "$as_me: error: Package requirements (nss) were not met: + +$NSS_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables NSS_CFLAGS +and NSS_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&2;} + { (exit 1); exit 1; }; } +elif test $pkg_failed = untried; then + { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables NSS_CFLAGS +and NSS_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details." >&5 +echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables NSS_CFLAGS +and NSS_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + NSS_CFLAGS=$pkg_cv_NSS_CFLAGS + NSS_LIBS=$pkg_cv_NSS_LIBS + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + : +fi;; +(auto) +pkg_failed=no +{ echo "$as_me:$LINENO: checking for NSS" >&5 +echo $ECHO_N "checking for NSS... $ECHO_C" >&6; } + +if test -n "$PKG_CONFIG"; then + if test -n "$NSS_CFLAGS"; then + pkg_cv_NSS_CFLAGS="$NSS_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"nss\"") >&5 + ($PKG_CONFIG --exists --print-errors "nss") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_NSS_CFLAGS=`$PKG_CONFIG --cflags "nss" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi +if test -n "$PKG_CONFIG"; then + if test -n "$NSS_LIBS"; then + pkg_cv_NSS_LIBS="$NSS_LIBS" + else + if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"nss\"") >&5 + ($PKG_CONFIG --exists --print-errors "nss") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_NSS_LIBS=`$PKG_CONFIG --libs "nss" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + NSS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "nss"` + else + NSS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "nss"` + fi + # Put the nasty error message in config.log where it belongs + echo "$NSS_PKG_ERRORS" >&5 + + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +elif test $pkg_failed = untried; then + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +else + NSS_CFLAGS=$pkg_cv_NSS_CFLAGS + NSS_LIBS=$pkg_cv_NSS_LIBS + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + + { echo "$as_me:$LINENO: using NSS as crypto api" >&5 +echo "$as_me: using NSS as crypto api" >&6;} + ensc_crypto_api=nss +fi;; +esac + + +case $ensc_crypto_api in +(beecrypt) + ENSC_HAVE_CRYPTO=true + ENSC_CRYPTO_API=ENSC_CRYPTO_API_BEECRYPT + ENSC_CRYPTO_CFLAGS= + ENSC_CRYPTO_LIB=-lbeecrypt + ENSC_CAN_CRYPTO_WITH_DIETLIBC=false + ;; + +(nss) + ENSC_HAVE_CRYPTO=true + ENSC_CRYPTO_API=ENSC_CRYPTO_API_NSS + ENSC_CRYPTO_CFLAGS=$NSS_CFLAGS + ENSC_CRYPTO_LIB=$NSS_LIBS + ENSC_CAN_CRYPTO_WITH_DIETLIBC=false + ;; + +(none) + ENSC_HAVE_CRYPTO=false + ENSC_CRYPTO_API=ENSC_CRYPTO_API_NONE + ENSC_CRYPTO_CFLAGS= + ENSC_CRYPTO_LIB= + ENSC_CAN_CRYPTO_WITH_DIETLIBC=false + + { echo "$as_me:$LINENO: WARNING: No crypto api found/select. This will disable the build of \`vhashify'" >&5 +echo "$as_me: WARNING: No crypto api found/select. This will disable the build of \`vhashify'" >&2;} + ;; + +(*) { { echo "$as_me:$LINENO: error: internal error" >&5 +echo "$as_me: error: internal error" >&2;} + { (exit 1); exit 1; }; } +esac + + if $ENSC_HAVE_CRYPTO; then + ENSC_HAVE_CRYPTO_TRUE= + ENSC_HAVE_CRYPTO_FALSE='#' +else + ENSC_HAVE_CRYPTO_TRUE='#' + ENSC_HAVE_CRYPTO_FALSE= +fi + + if $ENSC_CAN_CRYPTO_WITH_DIETLIBC; then + ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE= + ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE='#' +else + ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE='#' + ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE= +fi + +ENSC_CRYPTO_CFLAGS=$ENSC_CRYPTO_CFLAGS + +ENSC_CRYPTO_LIB=$ENSC_CRYPTO_LIB + + +cat >>confdefs.h <<_ACEOF +#define ENSC_CRYPTO_API $ENSC_CRYPTO_API +_ACEOF + + + + { echo "$as_me:$LINENO: checking for host initscripts" >&5 echo $ECHO_N "checking for host initscripts... $ECHO_C" >&6; } @@ -28497,6 +28997,20 @@ echo "$as_me: error: conditional \"ENSC_CAN_BEECRYPT_WITH_DIETLIBC\" was never d Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi +if test -z "${ENSC_HAVE_CRYPTO_TRUE}" && test -z "${ENSC_HAVE_CRYPTO_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"ENSC_HAVE_CRYPTO\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"ENSC_HAVE_CRYPTO\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE}" && test -z "${ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"ENSC_CAN_CRYPTO_WITH_DIETLIBC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"ENSC_CAN_CRYPTO_WITH_DIETLIBC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi if test -z "${HAVE_GENTOO_INIT_TRUE}" && test -z "${HAVE_GENTOO_INIT_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"HAVE_GENTOO_INIT\" was never defined. Usually this means the macro was only invoked conditionally." >&5 @@ -28527,6 +29041,7 @@ Features: ext2fs Source: $ensc_cv_test_ext2fs_header syscall(2) invocation: $with_syscall vserver(2) syscall#: $ensc_cv_value_syscall_vserver + crypto api: $ensc_crypto_api Paths: prefix: $prefix @@ -28838,7 +29353,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by util-vserver $as_me 0.30.214, which was +This file was extended by util-vserver $as_me 0.30.215, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -28891,7 +29406,7 @@ Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -util-vserver config.status 0.30.214 +util-vserver config.status 0.30.215 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" @@ -29167,9 +29682,9 @@ CCDEPMODE!$CCDEPMODE$ac_delim am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim LN_S!$LN_S$ac_delim +PKG_CONFIG!$PKG_CONFIG$ac_delim ENSC_HAVE_CXX_COMPILER_TRUE!$ENSC_HAVE_CXX_COMPILER_TRUE$ac_delim ENSC_HAVE_CXX_COMPILER_FALSE!$ENSC_HAVE_CXX_COMPILER_FALSE$ac_delim -ENSC_HAVE_C99_COMPILER_TRUE!$ENSC_HAVE_C99_COMPILER_TRUE$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then @@ -29211,6 +29726,7 @@ _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF +ENSC_HAVE_C99_COMPILER_TRUE!$ENSC_HAVE_C99_COMPILER_TRUE$ac_delim ENSC_HAVE_C99_COMPILER_FALSE!$ENSC_HAVE_C99_COMPILER_FALSE$ac_delim ENSC_PATHPROG_SED!$ENSC_PATHPROG_SED$ac_delim CAT!$CAT$ac_delim @@ -29254,6 +29770,7 @@ CPIO!$CPIO$ac_delim RESTORE!$RESTORE$ac_delim RSYNC!$RSYNC$ac_delim STRACE!$STRACE$ac_delim +FSCK!$FSCK$ac_delim DOXYGEN!$DOXYGEN$ac_delim XSLTP!$XSLTP$ac_delim XSLTPROC!$XSLTPROC$ac_delim @@ -29294,15 +29811,64 @@ ENSC_HAVE_BEECRYPT_TRUE!$ENSC_HAVE_BEECRYPT_TRUE$ac_delim ENSC_HAVE_BEECRYPT_FALSE!$ENSC_HAVE_BEECRYPT_FALSE$ac_delim ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE!$ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE$ac_delim ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE!$ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE$ac_delim +NSS_CFLAGS!$NSS_CFLAGS$ac_delim +NSS_LIBS!$NSS_LIBS$ac_delim +ENSC_HAVE_CRYPTO_TRUE!$ENSC_HAVE_CRYPTO_TRUE$ac_delim +ENSC_HAVE_CRYPTO_FALSE!$ENSC_HAVE_CRYPTO_FALSE$ac_delim +ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE!$ENSC_CAN_CRYPTO_WITH_DIETLIBC_TRUE$ac_delim +ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE!$ENSC_CAN_CRYPTO_WITH_DIETLIBC_FALSE$ac_delim +ENSC_CRYPTO_CFLAGS!$ENSC_CRYPTO_CFLAGS$ac_delim +ENSC_CRYPTO_LIB!$ENSC_CRYPTO_LIB$ac_delim HAVE_GENTOO_INIT_TRUE!$HAVE_GENTOO_INIT_TRUE$ac_delim HAVE_GENTOO_INIT_FALSE!$HAVE_GENTOO_INIT_FALSE$ac_delim HAVE_SYSV_INIT_TRUE!$HAVE_SYSV_INIT_TRUE$ac_delim HAVE_SYSV_INIT_FALSE!$HAVE_SYSV_INIT_FALSE$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +CEOF$ac_eof +_ACEOF + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 89; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 2; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 @@ -29320,7 +29886,7 @@ if test -n "$ac_eof"; then fi cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof +cat >"\$tmp/subs-3.sed" <<\CEOF$ac_eof /@[a-zA-Z_][a-zA-Z_0-9]*@/!b end _ACEOF sed ' @@ -29589,7 +30155,7 @@ s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" | sed -f "$tmp/subs-3.sed" >$tmp/out test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && diff --git a/configure.ac b/configure.ac index b265532..ec01b2f 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -dnl $Id: configure.ac 2604 2007-09-02 20:03:17Z dhozac $ +dnl $Id: configure.ac 2706 2008-03-17 08:59:37Z dhozac $ dnl Copyright (C) 2003,2004 Enrico Scholz dnl @@ -24,7 +24,7 @@ dnl distribution terms that you use for the rest of that program. dnl AC_PREREQ(2.57) -AC_INIT(util-vserver, 0.30.214, vserver@list.linux-vserver.org) +AC_INIT(util-vserver, 0.30.215, vserver@list.linux-vserver.org) AC_CONFIG_SRCDIR([src/capchroot.c]) AC_CONFIG_HEADER([config.h]) @@ -42,6 +42,7 @@ AC_PROG_CC AC_PROG_INSTALL AC_PROG_LN_S AM_PROG_CC_C_O +PKG_PROG_PKG_CONFIG ENSC_CXXCOMPILER ENSC_C99COMPILER @@ -63,6 +64,7 @@ ENSC_PATHPROG(CPIO, cpio, [cpio]) ENSC_PATHPROG(RESTORE, restore, [restore]) ENSC_PATHPROG(RSYNC, rsync, [rsync]) ENSC_PATHPROG(STRACE, strace, [strace]) +ENSC_PATHPROG(FSCK, fsck) ENSC_PATHPROG(DOXYGEN, doxygen, [:]) ENSC_PATHPROG(XSLTP, xsltp, [:]) @@ -308,10 +310,30 @@ if test x"$ensc_have_dietlibc" = xno; then fi +dnl ######################## +dnl +dnl {crypto stuff +dnl +AC_MSG_CHECKING([for used crypto API]) +AC_ARG_WITH(crypto-api, + AC_HELP_STRING([--with-crypto-api=API], + [select crypto api to be used; possible values are `none', `nss', `beecrypt', `auto' (default:auto)]), + [case $withval in + (none|nss|beecrypt|auto) ensc_crypto_api=$withval;; + (*) AC_MSG_ERROR([invalid initscripts value, only gentoo and sysv are supported]);; + esac],[ensc_crypto_api=auto]) +AC_MSG_RESULT($ensc_crypto_api) + + +dnl Now, check for matching crypto api. When selected 'auto', the +dnl first matching one wins + dnl ######################## dnl dnl {check for beecrypt dnl +case $ensc_crypto_api in +(auto|beecrypt) if test x"$ensc_cv_c99_c99compiler" = xyes; then ensc_have_beecrypt=yes @@ -324,17 +346,20 @@ if test x"$ensc_cv_c99_c99compiler" = xyes; then AC_CHECK_LIB(beecrypt, hashFunctionContextInit, [ : ], [ ensc_have_beecrypt=no ]) fi - - if test x"$ensc_have_beecrypt" != xyes; then - AC_MSG_WARN([ -**** -**** 'beecrypt' could not be found; -**** this will disable the build of 'vhashify' -****]) - fi else ensc_have_beecrypt=no -fi +fi;; +esac + +case $ensc_crypto_api in +(auto) if test x"$ensc_have_beecrypt" = xyes; then + AC_MSG_NOTICE([using beecrypt as crypto api]) + ensc_crypto_api=beecrypt + fi;; +(beecrypt) if test x"$ensc_have_beecrypt" != xyes; then + AC_MSG_ERROR([beecrypt crypto api not found]) + fi;; +esac AM_CONDITIONAL(ENSC_HAVE_BEECRYPT, test x"$ensc_have_beecrypt" = xyes) AM_CONDITIONAL(ENSC_CAN_BEECRYPT_WITH_DIETLIBC, false) @@ -344,6 +369,66 @@ dnl dnl ######################## +dnl ######################## +dnl +dnl {check for nss +dnl + +case $ensc_crypto_api in +(nss) PKG_CHECK_MODULES(NSS, nss);; +(auto) PKG_CHECK_MODULES(NSS, nss, [ + AC_MSG_NOTICE([using NSS as crypto api]) + ensc_crypto_api=nss], + AC_MSG_RESULT(no));; +esac + +dnl +dnl nss stuff ends here} +dnl +dnl ######################## + +case $ensc_crypto_api in +(beecrypt) + ENSC_HAVE_CRYPTO=true + ENSC_CRYPTO_API=ENSC_CRYPTO_API_BEECRYPT + ENSC_CRYPTO_CFLAGS= + ENSC_CRYPTO_LIB=-lbeecrypt + ENSC_CAN_CRYPTO_WITH_DIETLIBC=false + ;; + +(nss) + ENSC_HAVE_CRYPTO=true + ENSC_CRYPTO_API=ENSC_CRYPTO_API_NSS + ENSC_CRYPTO_CFLAGS=$NSS_CFLAGS + ENSC_CRYPTO_LIB=$NSS_LIBS + ENSC_CAN_CRYPTO_WITH_DIETLIBC=false + ;; + +(none) + ENSC_HAVE_CRYPTO=false + ENSC_CRYPTO_API=ENSC_CRYPTO_API_NONE + ENSC_CRYPTO_CFLAGS= + ENSC_CRYPTO_LIB= + ENSC_CAN_CRYPTO_WITH_DIETLIBC=false + + AC_MSG_WARN([No crypto api found/select. This will disable the build of `vhashify']) + ;; + +(*) AC_MSG_ERROR([internal error]) +esac + +AM_CONDITIONAL(ENSC_HAVE_CRYPTO, $ENSC_HAVE_CRYPTO) +AM_CONDITIONAL(ENSC_CAN_CRYPTO_WITH_DIETLIBC, $ENSC_CAN_CRYPTO_WITH_DIETLIBC) +AC_SUBST(ENSC_CRYPTO_CFLAGS, $ENSC_CRYPTO_CFLAGS) +AC_SUBST(ENSC_CRYPTO_LIB, $ENSC_CRYPTO_LIB) +AC_DEFINE_UNQUOTED(ENSC_CRYPTO_API, $ENSC_CRYPTO_API, [Used crypto API]) + +dnl +dnl crypto stuff ends here} +dnl +dnl ######################## + + dnl Check what distro this is, use Gentoo initscripts if appropriate AC_MSG_CHECKING([for host initscripts]) AC_ARG_WITH(initscripts, AC_HELP_STRING([--with-initscripts=TYPE], [force host initscripts; valid values are 'gentoo' and 'sysv' (default: guess)]), [ @@ -406,6 +491,7 @@ Features: ext2fs Source: $ensc_cv_test_ext2fs_header syscall(2) invocation: $with_syscall vserver(2) syscall#: $ensc_cv_value_syscall_vserver + crypto api: $ensc_crypto_api Paths: prefix: $prefix diff --git a/contrib/Makefile-files b/contrib/Makefile-files index e755bb4..01f3eac 100644 --- a/contrib/Makefile-files +++ b/contrib/Makefile-files @@ -1,4 +1,4 @@ -## $Id: Makefile-files 2556 2007-07-07 15:24:07Z ensc $ -*- makefile -*- +## $Id: Makefile-files 2609 2007-09-06 07:53:46Z ensc $ -*- makefile -*- ## Copyright (C) 2004 Enrico Scholz ## @@ -36,6 +36,7 @@ EXTRA_DIST += $(contrib_subst_SRCS) \ contrib/yum-3.0.5-chroot.patch \ contrib/yum-3.2.0-chroot.patch \ contrib/yum-3.2.1-chroot.patch \ + contrib/yum-3.2.4-chroot.patch \ contrib/make-manifest contrib/manifest.dat: contrib/.manifest.dat.pathsubst.stamp diff --git a/contrib/manifest.dat.pathsubst b/contrib/manifest.dat.pathsubst index ab8e256..cf49623 100644 --- a/contrib/manifest.dat.pathsubst +++ b/contrib/manifest.dat.pathsubst @@ -69,6 +69,7 @@ base @PKGLIBDIR@/save_ctxinfo base @PKGLIBDIR@/secure-mount base @PKGLIBDIR@/sigexec base @PKGLIBDIR@/start-vservers +base @PKGLIBDIR@/tunctl build @PKGLIBDIR@/vapt-get-worker build @PKGLIBDIR@/vyum-worker build @PKGLIBDIR@/vpkg @@ -110,6 +111,8 @@ build @SBINDIR@/vemerge build @SBINDIR@/vesync core @SBINDIR@/vkill core @SBINDIR@/vlimit +core @SBINDIR@/vmemctrl +core @SBINDIR@/vmount core @SBINDIR@/vnamespace base @SBINDIR@/vps base @SBINDIR@/vpstree @@ -121,6 +124,7 @@ legacy @SBINDIR@/vserver-copy core @SBINDIR@/vserver-info base @SBINDIR@/vserver-stat base @SBINDIR@/vsomething +core @SBINDIR@/vspace core @SBINDIR@/vtag base @SBINDIR@/vtop core @SBINDIR@/vuname @@ -134,11 +138,12 @@ core @MANDIR@/*/reducecap* legacy @MANDIR@/*/distrib-info* legacy @MANDIR@/*/vserver-copy* legacy @MANDIR@/*/rebootmgr* -legacy @MANDIR@/*/vps.* +base @MANDIR@/*/vps.* base @MANDIR@/*/vpstree.* base @MANDIR@/*/vserver-stat* base @MANDIR@/*/vserver.* base @MANDIR@/*/vtop* +build @MANDIR@/*/vserver-build* legacy @CONFIG@ @INITRDDIR@/v_gated legacy @CONFIG@ @INITRDDIR@/v_httpd legacy @CONFIG@ @INITRDDIR@/v_named diff --git a/contrib/yum-3.2.4-chroot.patch b/contrib/yum-3.2.4-chroot.patch new file mode 100644 index 0000000..fd6c023 --- /dev/null +++ b/contrib/yum-3.2.4-chroot.patch @@ -0,0 +1,158 @@ +--- yum-3.2.4/yum/__init__.py.chroot ++++ yum-3.2.4/yum/__init__.py +@@ -214,8 +214,7 @@ class YumBase(depsolve.Depsolve): + repo_config_age = self.conf.config_file_age + + for reposdir in self.conf.reposdir: +- if os.path.exists(self.conf.installroot+'/'+reposdir): +- reposdir = self.conf.installroot + '/' + reposdir ++ reposdir = self.conf.getRootedPath(reposdir) + + if os.path.isdir(reposdir): + for repofn in glob.glob('%s/*.repo' % reposdir): +@@ -664,11 +663,9 @@ class YumBase(depsolve.Depsolve): + # if we're not root then we don't lock - just return nicely + if self.conf.uid != 0: + return +- +- root = self.conf.installroot +- lockfile = root + '/' + lockfile # lock in the chroot +- lockfile = os.path.normpath(lockfile) # get rid of silly preceding extra / +- ++ ++ lockfile = self.conf.lockfile ++ + mypid=str(os.getpid()) + while not self._lock(lockfile, mypid, 0644): + fd = open(lockfile, 'r') +@@ -700,9 +697,8 @@ class YumBase(depsolve.Depsolve): + if self.conf.uid != 0: + return + +- root = self.conf.installroot +- lockfile = root + '/' + lockfile # lock in the chroot +- ++ lockfile=self.conf.lockfile ++ + self._unlock(lockfile) + + def _lock(self, filename, contents='', mode=0777): +--- yum-3.2.4/yum/config.py.chroot ++++ yum-3.2.4/yum/config.py +@@ -469,6 +469,26 @@ class StartupConf(BaseConfig): + pluginpath = ListOption(['/usr/share/yum-plugins', '/usr/lib/yum-plugins']) + pluginconfpath = ListOption(['/etc/yum/pluginconf.d']) + ++ def getRootedPath(self, path, enforce_default=False, defaults_to_host=False): ++ instroot = getattr(self, 'installroot', None) ++ if instroot==None: ++ return path ++ ++ if path.startswith('hostfs://'): res = path[9:] ++ elif path.startswith('chrootfs://'): res = instroot + '/' + path[11:] ++ else: ++ tmp = instroot + '/' + path ++ ++ if enforce_default: ++ if defaults_to_host: res = path ++ else: res = tmp ++ else: ++ if os.path.exists(tmp): res = tmp ++ elif defaults_to_host: res = path ++ else: res = tmp ++ ++ return res ++ + class YumConf(StartupConf): + ''' + Configuration option definitions for yum.conf\'s [main] section. +@@ -482,6 +502,7 @@ class YumConf(StartupConf): + persistdir = Option('/var/lib/yum') + keepcache = BoolOption(True) + logfile = Option('/var/log/yum.log') ++ lockfile = Option('/var/run/yum.pid') + reposdir = ListOption(['/etc/yum/repos.d', '/etc/yum.repos.d']) + syslog_ident = Option() + syslog_facility = Option('LOG_DAEMON') +@@ -615,9 +636,9 @@ def readMainConfig(startupconf): + yumconf.populate(startupconf._parser, 'main') + + # Apply the installroot to directory options +- for option in ('cachedir', 'logfile', 'persistdir'): ++ for option in ('cachedir', 'logfile', 'persistdir', 'lockfile'): + path = getattr(yumconf, option) +- setattr(yumconf, option, yumconf.installroot + path) ++ setattr(yumconf, option, yumconf.getRootedPath(path)) + + # Add in some extra attributes which aren't actually configuration values + yumconf.yumvar = yumvars +--- yum-3.2.4/docs/yum.conf.5.chroot ++++ yum-3.2.4/docs/yum.conf.5 +@@ -23,8 +23,10 @@ The [main] section must exist for yum to + following options: + + .IP \fBcachedir\fR +-Directory where yum should store its cache and db files. The default is +-`/var/cache/yum'. ++Directory where yum should store its cache and db files. The default ++is `/var/cache/yum'. Unless the prefixes `hostfs://' or `chrootfs://' ++are used, some magic will be applied to determine the real path in ++combination with `--installroot'. + + .IP \fBpersistdir\fR + Directory where yum should store information that should persist over multiple +@@ -44,6 +46,10 @@ documented in \fB[repository] options\fR + repositories defined in /etc/yum/yum.conf to form the complete set of + repositories that yum will use. + ++Unless the prefixes `hostfs://' or `chrootfs://' are used, some magic ++will be applied to determine the real path in combination with ++`--installroot'. ++ + .IP \fBdebuglevel\fR + Debug message output level. Practical range is 0\-10. Default is `2'. + +@@ -51,7 +57,10 @@ Debug message output level. Practical ra + Error message output level. Practical range is 0\-10. Default is `2'. + + .IP \fBlogfile\fR +-Full directory and file name for where yum should write its log file. ++Full directory and file name for where yum should write its log ++file. Unless the prefixes `hostfs://' or `chrootfs://' are used, ++some magic will be applied to determine the real path in combination ++with `--installroot'. + + .IP \fBgpgcheck\fR + Either `1' or `0'. This tells yum whether or not it should perform a GPG +--- yum-3.2.4/cli.py.chroot ++++ yum-3.2.4/cli.py +@@ -1204,13 +1204,14 @@ class YumOptionParser(OptionParser): + def getRoot(self,opts): + # If the conf file is inside the installroot - use that. + # otherwise look for it in the normal root ++ if opts.conffile==None: ++ opts.conffile = '/etc/yum/yum.conf' ++ if opts.installroot: ++ if os.access(opts.installroot+opts.conffile, os.R_OK): ++ opts.conffile = opts.installroot+opts.conffile ++ elif os.access(opts.installroot+'/etc/yum.conf', os.R_OK): ++ opts.conffile = opts.installroot+'/etc/yum.conf' + if opts.installroot: +- if os.access(opts.installroot+'/'+opts.conffile, os.R_OK): +- opts.conffile = opts.installroot+'/'+opts.conffile +- elif opts.conffile == '/etc/yum/yum.conf': +- # check if /installroot/etc/yum.conf exists. +- if os.access(opts.installroot+'/etc/yum.conf', os.R_OK): +- opts.conffile = opts.installroot+'/etc/yum.conf' + root=opts.installroot + else: + root = '/' +@@ -1231,7 +1232,7 @@ class YumOptionParser(OptionParser): + help="be tolerant of errors") + self.add_option("-C", dest="cacheonly", action="store_true", + help="run entirely from cache, don't update cache") +- self.add_option("-c", dest="conffile", default='/etc/yum/yum.conf', ++ self.add_option("-c", dest="conffile", default=None, + help="config file location", metavar=' [config file]') + self.add_option("-R", dest="sleeptime", type='int', default=None, + help="maximum command wait time", metavar=' [minutes]') diff --git a/distrib/Makefile.in b/distrib/Makefile.in index c0dbda7..dae0145 100644 --- a/distrib/Makefile.in +++ b/distrib/Makefile.in @@ -331,9 +331,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu distrib/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits distrib/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu distrib/Makefile + $(AUTOMAKE) --gnits distrib/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -377,6 +377,22 @@ uninstall-nobase_distribSCRIPTS: rm -f "$(DESTDIR)$(distribdir)/$$f"; \ done +installcheck-nobase_distribSCRIPTS: $(nobase_distrib_SCRIPTS) + bad=0; pid=$$$$; list="$(nobase_distrib_SCRIPTS)"; for p in $$list; do \ + case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ + *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ + esac; \ + f=`echo "$$p" | sed 's,^.*/,,;$(transform)'`; \ + f=`echo "$$p" | sed 's|[^/]*$$||'`"$$f"; \ + for opt in --help --version; do \ + if "$(DESTDIR)$(distribdir)/$$f" $$opt >c$${pid}_.out \ + 2>c$${pid}_.err &2; bad=1; fi; \ + done; \ + done; rm -f c$${pid}_.???; exit $$bad + mostlyclean-libtool: -rm -f *.lo @@ -540,7 +556,7 @@ install-pdf: install-pdf-am install-ps: install-ps-am -installcheck-am: +installcheck-am: installcheck-nobase_distribSCRIPTS maintainer-clean: maintainer-clean-am -rm -f Makefile @@ -573,11 +589,12 @@ uninstall-am: uninstall-defaultsDATA uninstall-nobase_confdistribDATA \ install-nobase_confdistribDATA install-nobase_distribDATA \ install-nobase_distribSCRIPTS install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-defaultsDATA uninstall-nobase_confdistribDATA \ - uninstall-nobase_distribDATA uninstall-nobase_distribSCRIPTS + installcheck-am installcheck-nobase_distribSCRIPTS installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-defaultsDATA \ + uninstall-nobase_confdistribDATA uninstall-nobase_distribDATA \ + uninstall-nobase_distribSCRIPTS AM_INSTALLCHECK_STD_OPTIONS_EXEMPT \ diff --git a/distrib/gentoo/initpost b/distrib/gentoo/initpost index af89200..a61ab1b 100755 --- a/distrib/gentoo/initpost +++ b/distrib/gentoo/initpost @@ -51,6 +51,11 @@ $_CHROOT_SH mkdir /usr/portage 2>/dev/null || : $_CHROOT_SH mkdir /usr/portage/distfiles 2>/dev/null || : +# check if we have openrc +have_openrc=0 +$_CHROOT_SH testfile /lib/rc/bin/is_older_than && have_openrc=1 + + # gentoo initstyle magic initstyle=sysv test -e "$cfgdir"/apps/init/style && initstyle=$(<"$cfgdir"/apps/init/style) @@ -59,8 +64,8 @@ if test "$initstyle" == "gentoo"; then echo ">>> Installing special init-style magic ... " $_CAT "$__DISTRIBDIR"/gentoo/init-vserver.sh | \ - $_CHROOT_SH truncate /lib/rcscripts/sh/init-vserver.sh - $_CHROOT_SH chmod 0755 /lib/rcscripts/sh/init-vserver.sh + $_CHROOT_SH truncate /lib/rc/sh/init-vserver.sh + $_CHROOT_SH chmod 0755 /lib/rc/sh/init-vserver.sh $_CAT "$__DISTRIBDIR"/gentoo/reboot.sh | \ $_CHROOT_SH truncate /etc/init.d/reboot.sh @@ -78,23 +83,29 @@ if test "$initstyle" == "gentoo"; then echo "!!! Consult the Gentoo Handbook on how to chroot and install" echo "!!! packages into the guest environment." echo "!!!" +else + # fix gettys in inittab + if $_CHROOT_SH testfile /etc/inittab; then + echo ">>> Fixing inittab ... " + chrootsed /etc/inittab \ + -e 's/\(^[^#].*getty.*$\)/#\1/' + fi fi - # unneeded runlevel scripts -echo ">>> Fixing default runlevel scripts ... " -$_CHROOT_SH rm /etc/runlevels/boot/{clock,consolefont,keymaps,modules,net.lo} 2>/dev/null || : -$_CHROOT_SH rm /etc/runlevels/default/{hdparm,netmount} 2>/dev/null || : - +if test $have_openrc -ne 1; then + echo ">>> Fixing default runlevel scripts ... " + $_CHROOT_SH rm /etc/runlevels/boot/{clock,consolefont,keymaps,modules,net.lo} 2>/dev/null || : + $_CHROOT_SH rm /etc/runlevels/default/{hdparm,netmount} 2>/dev/null || : +fi # setting hostname if test -r "$cfgdir"/uts/nodename && $_CHROOT_SH testfile /etc/conf.d/hostname; then echo ">>> Setting hostname ... " chrootsed /etc/conf.d/hostname \ - -e "s:HOSTNAME=\"\(.*\)\":HOSTNAME=\"$(< "$cfgdir"/uts/nodename)\":" + -e "s:\(HOSTNAME\)=\"\(.*\)\":\1=\"$(< "$cfgdir"/uts/nodename)\":i" fi - # fix syslog-ng.conf if $_CHROOT_SH testfile /etc/syslog-ng/syslog-ng.conf; then echo ">>> Fixing syslog-ng.conf ... " @@ -103,27 +114,21 @@ if $_CHROOT_SH testfile /etc/syslog-ng/syslog-ng.conf; then -e 's:\(.*console_all.*\):#\1:g' fi - -# fix gettys in inittab -if $_CHROOT_SH testfile /etc/inittab; then - echo ">>> Fixing inittab ... " - chrootsed /etc/inittab \ - -e 's/\(^[^#].*getty.*$\)/#\1/' -fi - - # fix fstab for checkfs/localmount in baselayout-2 # (does not affect any previous versions) -echo ">>> Fixing fstab ... " -echo "/dev/hdv1 / ufs defaults 0 0" | $_CHROOT_SH truncate /etc/fstab - +if test $have_openrc -ne 1; then + echo ">>> Fixing fstab ... " + echo "/dev/hdv1 / ufs defaults 0 0" | $_CHROOT_SH truncate /etc/fstab +fi # always satisfy net dependency in baselayout-2 # (does not affect any previous versions) -echo ">>> Providing dummy net dependency ... " -$_CAT "$__DISTRIBDIR"/gentoo/net.vserver | \ -$_CHROOT_SH truncate /etc/init.d/net.vserver -$_CHROOT_SH chmod 0755 /etc/init.d/net.vserver -$_CHROOT_SH link /etc/init.d/net.vserver /etc/runlevels/boot/net.vserver +if test $have_openrc -ne 1; then + echo ">>> Providing dummy net dependency ... " + $_CAT "$__DISTRIBDIR"/gentoo/net.vserver | \ + $_CHROOT_SH truncate /etc/init.d/net.vserver + $_CHROOT_SH chmod 0755 /etc/init.d/net.vserver + $_CHROOT_SH link /etc/init.d/net.vserver /etc/runlevels/boot/net.vserver +fi popd &>/dev/null diff --git a/doc/configuration.html b/doc/configuration.html index 793cd14..7e2f605 100644 --- a/doc/configuration.html +++ b/doc/configuration.html @@ -566,6 +566,13 @@ The master yum configuration file. It supports the @YUMETCDIR@, The configuration directory for the vserver vserver-name.
    +
  • + badness +
    +
    +Contains the bias to be applied to processes in this guest when the OOM-killer strikes. +
    +
  • bcapabilities
    @@ -899,6 +906,52 @@ from/to at startup via initscript.
+
  • + /etc/vservers/vserver-name/apps/vdevmap +
    +
      +
    • + /etc/vservers/vserver-name/apps/vdevmap/x +
      +
      'x' is an arbitrary name, replace it with e.g. device names
      +
        +
      • + create +
        +
        When this file exists, the device can be created (if the guest has CAP_MKNOD)
        +
      • +
      • + device +
        +
        Contains the name of a device node
        +
      • +
      • + flags +
        +
        This file will let you specify unimplemented flags manually
        +
      • +
      • + open +
        +
        When this file exists, the device can be opened
        +
      • +
      • + remap +
        +
        +When this file exists, target will +have to exist as well and opening the device will in fact open the target device +
        +
      • +
      • + target +
        +
        Contains the device node of the target node to open instead of the device when remap is set
        +
      • +
      +
    • +
    +
  • /etc/vservers/vserver-name/apps/vshelper
    @@ -1051,6 +1104,9 @@ filesystem.
  • /etc/vservers/vserver-name/cpuset
    +
    +Puts the guest in a cpuset. Required entries are name, cpus and mems. +
    • cpu_exclusive @@ -1087,28 +1143,32 @@ filesystem.
    • /etc/vservers/vserver-name/dlimits
      +
      +Note that all entries are required for the disk limit to be applied. +
      • - /etc/vservers/vserver-name/dlimits/dlimit + /etc/vservers/vserver-name/dlimits/x
        +
        'x' is an arbitrary name, replace it with e.g. integers
        • - directory + directory
          The directory to which the limit should be applied
        • - inodes_total + inodes_total
          The amount of inodes this vserver should be limited to
        • - reserved + reserved
          How much space (percentage-wise) should be reserved for the root user
        • - space_total + space_total
          The amount of space this vserver should be limited to (measured in blocks of 1024 bytes)
        • @@ -1188,11 +1248,26 @@ numbers like '00' are good names for these directories.
          When this file exists, this interface will be ignored.
          +
        • + gid +
          +
          +Sets the group ownership of tun/tap interfaces. Requires a group id, +not a group name. +
          +
        • ip
          The IP address which will be assigned to this interface.
        • +
        • + linktype +
          +
          +Sets the link type of tun/tap interfaces. +
          +
        • mask
          @@ -1207,6 +1282,14 @@ this file. Without such an entry, the IP will not be shown by ifconfig but by ip addr ls only. Such a labeled interface is known as an "alias" also (e.g. 'eth0:foo'). +
        • +
        • + nocsum +
          +
          +If a tun or tap interface is created, the presence of this file will +disable checksumming on it. +
        • nodev @@ -1237,6 +1320,38 @@ interface will be skipped. This will override the global
          The scope of the network interface.
        • +
        • + shared +
          +
          +When this file exists, the tun/tap interface created will not be +owned by this particular guest. +
          +
        • +
        • + tap +
          +
          +When this file exists, a tap interface will be created when the guest +starts, and removed when the guest stops. +
          +
        • +
        • + tun +
          +
          +When this file exists, a tun interface will be created when the guest +starts, and removed when the guest stops. +
          +
        • +
        • + uid +
          +
          +Sets the ownership of tun/tap interfaces. Requires a user id, not a +username. +
          +
        • vlandev
          @@ -1589,6 +1704,27 @@ the configuration directory will be made the working directory.
      • +
      • + /etc/vservers/vserver-name/spaces +
        +
          +
        • + mask +
          +
          Contains a mask of spaces to clone/enter
          +
        • +
        • + net +
          +
          Enable network virtualization for this guest
          +
        • +
        • + pid +
          +
          Enables pid virtualization for this guest
          +
        • +
        +
      • /etc/vservers/vserver-name/sysctl
        diff --git a/doc/configuration.xml b/doc/configuration.xml index 7cfe4ca..4088d35 100644 --- a/doc/configuration.xml +++ b/doc/configuration.xml @@ -1,6 +1,6 @@ - + @@ -666,6 +666,11 @@ called as chbind <options> mount .... See fstab also. + + +Contains the bias to be applied to processes in this guest when the OOM-killer strikes. + + @@ -780,7 +785,34 @@ pair per line. - + + + + 'x' is an arbitrary name, replace it with e.g. device names + + When this file exists, the device can be opened + + + When this file exists, the device can be created (if the guest has CAP_MKNOD) + + + +When this file exists, target will +have to exist as well and opening the device will in fact open the target device + + + + This file will let you specify unimplemented flags manually + + + Contains the name of a device node + + + Contains the device node of the target node to open instead of the device when remap is set + + + + 30 @@ -1309,6 +1341,47 @@ When this file exists, the steps which setup and destroy a VLAN interface will be executed. + + +When this file exists, a tun interface will be created when the guest +starts, and removed when the guest stops. + + + + +When this file exists, a tap interface will be created when the guest +starts, and removed when the guest stops. + + + + +If a tun or tap interface is created, the presence of this file will +disable checksumming on it. + + + + +When this file exists, the tun/tap interface created will not be +owned by this particular guest. + + + + +Sets the ownership of tun/tap interfaces. Requires a user id, not a +username. + + + + +Sets the group ownership of tun/tap interfaces. Requires a group id, +not a group name. + + + + +Sets the link type of tun/tap interfaces. + + @@ -1399,7 +1472,11 @@ tools and can *not* be modified. - + +Note that all entries are required for the disk limit to be applied. + + + 'x' is an arbitrary name, replace it with e.g. integers The directory to which the limit should be applied @@ -1428,6 +1505,9 @@ tools and can *not* be modified. + +Puts the guest in a cpuset. Required entries are name, cpus and mems. + The name of the cpuset for this vserver @@ -1513,5 +1593,17 @@ tools and can *not* be modified. + + + + Enables pid virtualization for this guest + + + Enable network virtualization for this guest + + + Contains a mask of spaces to clone/enter + + diff --git a/ensc_wrappers/wrappers-ioctl.hc b/ensc_wrappers/wrappers-ioctl.hc index 33fd1e9..41938e0 100644 --- a/ensc_wrappers/wrappers-ioctl.hc +++ b/ensc_wrappers/wrappers-ioctl.hc @@ -1,4 +1,4 @@ -// $Id: wrappers-ioctl.hc 814 2004-02-06 14:47:18Z ensc $ --*- c -*-- +// $Id: wrappers-ioctl.hc 2687 2008-02-28 23:28:31Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // @@ -27,3 +27,8 @@ Eioctl(int fd, int request, void *p) FatalErrnoError(res<0, "ioctl()"); } +#define EioctlD(fd, request, p) \ + do { \ + int res = ioctl(fd, request, p); \ + FatalErrnoError(res<0, "ioctl(" #request ")"); \ + } while (0) diff --git a/gentoo/Makefile-files b/gentoo/Makefile-files index faf7cbd..b5d5e9a 100644 --- a/gentoo/Makefile-files +++ b/gentoo/Makefile-files @@ -1,4 +1,4 @@ -## $Id$ -*- makefile -*- +## $Id: Makefile-files 2674 2008-01-27 07:55:13Z dhozac $ -*- makefile -*- ## Copyright (C) 2003 Enrico Scholz ## diff --git a/gentoo/bash-wrapper b/gentoo/bash-wrapper index 80481be..bf241bb 100644 --- a/gentoo/bash-wrapper +++ b/gentoo/bash-wrapper @@ -1,5 +1,5 @@ #! /bin/bash -# $Id$ +# $Id: bash-wrapper 2674 2008-01-27 07:55:13Z dhozac $ # Copyright (C) 2007 Daniel Hokka Zakrisson # diff --git a/gentoo/util-vserver b/gentoo/util-vserver index c7ff359..94903cc 100644 --- a/gentoo/util-vserver +++ b/gentoo/util-vserver @@ -42,7 +42,7 @@ start() { eend $? ebegin "Loading default device map" - $__PKGLIBDIR/bash-wrapper 'loadDeviceMap 0 "$__CONFDIR/.defaults/apps/vdevmap"' + $__PKGLIBDIR/bash-wrapper 'handleDeviceMap --set 0 "$__CONFDIR/.defaults/apps/vdevmap"' eend $? } diff --git a/kernel/context_cmd.h b/kernel/context_cmd.h index 354b29d..d1ec86b 100644 --- a/kernel/context_cmd.h +++ b/kernel/context_cmd.h @@ -79,11 +79,22 @@ struct vcmd_ctx_caps_v1 { /* bcaps commands */ #define VCMD_get_bcaps VC_CMD(FLAGS, 9, 0) -#define VCMD_set_bcaps VC_CMD(FLAGS,10, 0) +#define VCMD_set_bcaps VC_CMD(FLAGS, 10, 0) struct vcmd_bcaps { uint64_t bcaps; uint64_t bmask; }; + + +/* OOM badness */ + +#define VCMD_get_badness VC_CMD(MEMCTRL, 5, 0) +#define VCMD_set_badness VC_CMD(MEMCTRL, 6, 0) + +struct vcmd_badness_v0 { + int64_t bias; +}; + #endif /* _VX_CONTEXT_CMD_H */ diff --git a/kernel/device_cmd.h b/kernel/device_cmd.h index 5ebf825..506e21b 100644 --- a/kernel/device_cmd.h +++ b/kernel/device_cmd.h @@ -5,6 +5,7 @@ /* device vserver commands */ #define VCMD_set_mapping VC_CMD(DEVICE, 1, 0) +#define VCMD_unset_mapping VC_CMD(DEVICE, 2, 0) struct vcmd_set_mapping_v0 { const char *device; diff --git a/kernel/switch.h b/kernel/switch.h index ee6defc..6836c27 100644 --- a/kernel/switch.h +++ b/kernel/switch.h @@ -60,6 +60,8 @@ #define VC_CAT_SCHED 14 +#define VC_CAT_MEMCTRL 20 + #define VC_CAT_VNET 25 #define VC_CAT_NETALT 26 #define VC_CAT_NETMIG 27 diff --git a/lib/Makefile-files b/lib/Makefile-files index 5ac113d..26f3dde 100644 --- a/lib/Makefile-files +++ b/lib/Makefile-files @@ -1,4 +1,4 @@ -## $Id: Makefile-files 2589 2007-08-16 03:06:50Z dhozac $ -*- makefile -*- +## $Id: Makefile-files 2619 2007-10-13 12:13:30Z dhozac $ -*- makefile -*- ## Copyright (C) 2003 Enrico Scholz ## @@ -130,6 +130,8 @@ lib_v21_SRCS = lib/syscall_setccaps-v21.hc \ lib/syscall_ctxmigrate-v21.hc \ lib/syscall_setmapping.c \ lib/syscall_setmapping-v21.hc \ + lib/syscall_unsetmapping.c \ + lib/syscall_unsetmapping-v21.hc \ lib/syscall_schedinfo.c \ lib/syscall_schedinfo-v21.hc \ lib/syscall_getccaps-v21.hc \ @@ -150,7 +152,11 @@ lib_v23_SRCS = lib/syscall_tagmigrate-v23.hc \ lib/syscall_tagmigrate.c \ lib/syscall_tagcreate.c \ lib/syscall_tasktag-v23.hc \ - lib/syscall_tasktag.c + lib/syscall_tasktag.c \ + lib/syscall_getbadness.c \ + lib/syscall_getbadness-v23.hc \ + lib/syscall_setbadness.c \ + lib/syscall_setbadness-v23.hc if ENSC_HAVE_C99_COMPILER lib_v13_SRCS += lib/syscall_adddlimit-v13.hc \ diff --git a/lib/ccaps-v13.c b/lib/ccaps-v13.c index 4f38864..0f6d176 100644 --- a/lib/ccaps-v13.c +++ b/lib/ccaps-v13.c @@ -1,4 +1,4 @@ -// $Id: ccaps-v13.c 2393 2006-11-23 18:30:29Z dhozac $ --*- c -*-- +// $Id: ccaps-v13.c 2643 2007-12-19 02:17:10Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // @@ -41,6 +41,7 @@ static struct Mapping_uint64 const VALUES[] = { DECL("quota_ctl", VC_VXC_QUOTA_CTL), DECL("admin_mapper", VC_VXC_ADMIN_MAPPER), DECL("admin_cloop", VC_VXC_ADMIN_CLOOP), + DECL("kthread", VC_VXC_KTHREAD), // some deprecated values... DECL("mount", VC_VXC_SECURE_MOUNT), DECL("remount", VC_VXC_SECURE_REMOUNT), diff --git a/lib/ncaps-net.c b/lib/ncaps-net.c index 344f532..6f69fff 100644 --- a/lib/ncaps-net.c +++ b/lib/ncaps-net.c @@ -1,4 +1,4 @@ -// $Id: ncaps-net.c 2585 2007-08-12 00:13:31Z dhozac $ --*- c -*-- +// $Id: ncaps-net.c 2705 2008-03-17 08:55:11Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // @@ -31,7 +31,8 @@ #define DECL(STR, VAL) { STR, sizeof(STR)-1, VAL } static struct Mapping_uint64 const VALUES[] = { - DECL("raw_icmp", VC_NXC_RAW_ICMP), + DECL("tun_create", VC_NXC_TUN_CREATE), + DECL("raw_icmp", VC_NXC_RAW_ICMP), }; inline static char const * diff --git a/lib/nflags-net.c b/lib/nflags-net.c index 2ab0a3f..a4f6192 100644 --- a/lib/nflags-net.c +++ b/lib/nflags-net.c @@ -1,4 +1,4 @@ -// $Id: nflags-net.c 2597 2007-08-26 17:48:26Z dhozac $ --*- c -*-- +// $Id: nflags-net.c 2705 2008-03-17 08:55:11Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // @@ -37,6 +37,7 @@ static struct Mapping_uint64 const VALUES[] = { DECL("single_ip", VC_NXF_SINGLE_IP), DECL("lback_remap", VC_NXF_LBACK_REMAP), DECL("remap_lback", VC_NXF_LBACK_REMAP), + DECL("lback_allow", VC_NXF_LBACK_ALLOW), DECL("hide_netif", VC_NXF_HIDE_NETIF), DECL("hide_lback", VC_NXF_HIDE_LBACK), diff --git a/lib/syscall_ctxcreate-v21.hc b/lib/syscall_ctxcreate-v21.hc index 20e7462..a86d748 100644 --- a/lib/syscall_ctxcreate-v21.hc +++ b/lib/syscall_ctxcreate-v21.hc @@ -1,4 +1,4 @@ -// $Id$ --*- c -*-- +// $Id: syscall_ctxcreate-v21.hc 2674 2008-01-27 07:55:13Z dhozac $ --*- c -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // diff --git a/lib/syscall_fgetiattr-v22.hc b/lib/syscall_fgetiattr-v22.hc index 22d8c2e..01fb789 100644 --- a/lib/syscall_fgetiattr-v22.hc +++ b/lib/syscall_fgetiattr-v22.hc @@ -1,4 +1,4 @@ -// $Id$ --*- c++ -*-- +// $Id: syscall_fgetiattr-v22.hc 2674 2008-01-27 07:55:13Z dhozac $ --*- c++ -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // diff --git a/lib/syscall_fgetiattr.c b/lib/syscall_fgetiattr.c index 6cf14f4..c233a70 100644 --- a/lib/syscall_fgetiattr.c +++ b/lib/syscall_fgetiattr.c @@ -1,4 +1,4 @@ -// $Id$ --*- c++ -*-- +// $Id: syscall_fgetiattr.c 2674 2008-01-27 07:55:13Z dhozac $ --*- c++ -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // diff --git a/lib/syscall_fsetiattr-v22.hc b/lib/syscall_fsetiattr-v22.hc index ba2dfab..1fe3df0 100644 --- a/lib/syscall_fsetiattr-v22.hc +++ b/lib/syscall_fsetiattr-v22.hc @@ -1,4 +1,4 @@ -// $Id$ --*- c++ -*-- +// $Id: syscall_fsetiattr-v22.hc 2674 2008-01-27 07:55:13Z dhozac $ --*- c++ -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // diff --git a/lib/syscall_fsetiattr.c b/lib/syscall_fsetiattr.c index b93a2fd..0513b33 100644 --- a/lib/syscall_fsetiattr.c +++ b/lib/syscall_fsetiattr.c @@ -1,4 +1,4 @@ -// $Id$ --*- c++ -*-- +// $Id: syscall_fsetiattr.c 2674 2008-01-27 07:55:13Z dhozac $ --*- c++ -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // diff --git a/lib/syscall_getbadness-v23.hc b/lib/syscall_getbadness-v23.hc new file mode 100644 index 0000000..5c78939 --- /dev/null +++ b/lib/syscall_getbadness-v23.hc @@ -0,0 +1,33 @@ +// $Id: syscall_getbadness-v23.hc 2674 2008-01-27 07:55:13Z dhozac $ --*- c++ -*-- + +// Copyright (C) 2007 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; 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. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +static inline ALWAYSINLINE int +vc_get_badness_v23(xid_t xid, int64_t *badness) +{ + struct vcmd_badness_v0 data; + int ret; + ret = vserver(VCMD_get_badness, xid, &data); + if (ret) + return ret; + *badness = data.bias; + return 0; +} diff --git a/lib/syscall_getbadness.c b/lib/syscall_getbadness.c new file mode 100644 index 0000000..16c3fed --- /dev/null +++ b/lib/syscall_getbadness.c @@ -0,0 +1,39 @@ +// $Id: syscall_getbadness.c 2674 2008-01-27 07:55:13Z dhozac $ --*- c++ -*-- + +// Copyright (C) 2007 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; 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. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "vserver.h" +#include "virtual.h" +#include "vserver-internal.h" + +#if defined(VC_ENABLE_API_V23) +# include "syscall_getbadness-v23.hc" +#endif + +#if defined(VC_ENABLE_API_V23) + +int +vc_get_badness(xid_t xid, int64_t *badness) +{ + CALL_VC(CALL_VC_V23(vc_get_badness, xid, badness)); +} + +#endif diff --git a/lib/syscall_getccaps-v21.hc b/lib/syscall_getccaps-v21.hc index b6ba7ec..bd45ffd 100644 --- a/lib/syscall_getccaps-v21.hc +++ b/lib/syscall_getccaps-v21.hc @@ -1,4 +1,4 @@ -// $Id$ --*- c -*-- +// $Id: syscall_getccaps-v21.hc 2674 2008-01-27 07:55:13Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // diff --git a/lib/syscall_getsched-v21.hc b/lib/syscall_getsched-v21.hc index c1b9a11..9d3d93a 100644 --- a/lib/syscall_getsched-v21.hc +++ b/lib/syscall_getsched-v21.hc @@ -1,4 +1,4 @@ -// $Id$ --*- c -*-- +// $Id: syscall_getsched-v21.hc 2674 2008-01-27 07:55:13Z dhozac $ --*- c -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // diff --git a/lib/syscall_getsched.c b/lib/syscall_getsched.c index 1b6521b..118fa6c 100644 --- a/lib/syscall_getsched.c +++ b/lib/syscall_getsched.c @@ -1,4 +1,4 @@ -// $Id$ --*- c -*-- +// $Id: syscall_getsched.c 2674 2008-01-27 07:55:13Z dhozac $ --*- c -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // diff --git a/lib/syscall_netadd-netv2.hc b/lib/syscall_netadd-netv2.hc index d9489bf..0c266d6 100644 --- a/lib/syscall_netadd-netv2.hc +++ b/lib/syscall_netadd-netv2.hc @@ -1,4 +1,4 @@ -// $Id$ --*- c -*-- +// $Id: syscall_netadd-netv2.hc 2674 2008-01-27 07:55:13Z dhozac $ --*- c -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // diff --git a/lib/syscall_netremove-netv2.hc b/lib/syscall_netremove-netv2.hc index 2ca4331..7e133fb 100644 --- a/lib/syscall_netremove-netv2.hc +++ b/lib/syscall_netremove-netv2.hc @@ -1,4 +1,4 @@ -// $Id$ --*- c -*-- +// $Id: syscall_netremove-netv2.hc 2700 2008-03-10 19:59:18Z dhozac $ --*- c -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // @@ -31,10 +31,10 @@ vc_net_remove_netv2(nid_t nid, struct vc_net_addr const *info) k_ipv4.type = VC_NXA_TYPE_ANY; k_ipv6.type = VC_NXA_TYPE_ANY; - ret = vserver(VCMD_net_remove_ipv4, NID_USER2KERNEL(nid), &k_ipv4); - if (ret == -1) + ret = vserver(VCMD_net_remove_ipv6, NID_USER2KERNEL(nid), &k_ipv6); + if (ret == -1 && errno != ENOSYS) return -1; - return vserver(VCMD_net_remove_ipv6, NID_USER2KERNEL(nid), &k_ipv6); + return vserver(VCMD_net_remove_ipv4, NID_USER2KERNEL(nid), &k_ipv4); } switch (info->vna_type & (VC_NXA_TYPE_IPV4 | VC_NXA_TYPE_IPV6)) { case VC_NXA_TYPE_IPV4: { diff --git a/lib/syscall_setbadness-v23.hc b/lib/syscall_setbadness-v23.hc new file mode 100644 index 0000000..1f438bd --- /dev/null +++ b/lib/syscall_setbadness-v23.hc @@ -0,0 +1,30 @@ +// $Id: syscall_setbadness-v23.hc 2674 2008-01-27 07:55:13Z dhozac $ --*- c++ -*-- + +// Copyright (C) 2007 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; 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. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +static inline ALWAYSINLINE int +vc_set_badness_v23(xid_t xid, int64_t badness) +{ + struct vcmd_badness_v0 data = { + .bias = badness, + }; + return vserver(VCMD_set_badness, xid, &data); +} diff --git a/lib/syscall_setbadness.c b/lib/syscall_setbadness.c new file mode 100644 index 0000000..af31a29 --- /dev/null +++ b/lib/syscall_setbadness.c @@ -0,0 +1,39 @@ +// $Id: syscall_setbadness.c 2674 2008-01-27 07:55:13Z dhozac $ --*- c++ -*-- + +// Copyright (C) 2007 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; 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. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "vserver.h" +#include "virtual.h" +#include "vserver-internal.h" + +#if defined(VC_ENABLE_API_V23) +# include "syscall_setbadness-v23.hc" +#endif + +#if defined(VC_ENABLE_API_V23) + +int +vc_set_badness(xid_t xid, int64_t badness) +{ + CALL_VC(CALL_VC_V23(vc_set_badness, xid, badness)); +} + +#endif diff --git a/lib/syscall_setsched-v22.hc b/lib/syscall_setsched-v22.hc index 0af5e92..6b815e2 100644 --- a/lib/syscall_setsched-v22.hc +++ b/lib/syscall_setsched-v22.hc @@ -1,4 +1,4 @@ -// $Id$ --*- c -*-- +// $Id: syscall_setsched-v22.hc 2674 2008-01-27 07:55:13Z dhozac $ --*- c -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // diff --git a/lib/syscall_tagcreate.c b/lib/syscall_tagcreate.c index 752731a..39db617 100644 --- a/lib/syscall_tagcreate.c +++ b/lib/syscall_tagcreate.c @@ -1,4 +1,4 @@ -// $Id$ --*- c++ -*-- +// $Id: syscall_tagcreate.c 2674 2008-01-27 07:55:13Z dhozac $ --*- c++ -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // diff --git a/lib/syscall_tagmigrate-v23.hc b/lib/syscall_tagmigrate-v23.hc index bb718c8..254ff7e 100644 --- a/lib/syscall_tagmigrate-v23.hc +++ b/lib/syscall_tagmigrate-v23.hc @@ -1,4 +1,4 @@ -// $Id$ --*- c++ -*-- +// $Id: syscall_tagmigrate-v23.hc 2674 2008-01-27 07:55:13Z dhozac $ --*- c++ -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // @@ -23,5 +23,6 @@ static inline ALWAYSINLINE int vc_tag_migrate_tag(tag_t tag) { - return vserver(VCMD_tag_migrate, TAG_USER2KERNEL(tag), NULL); + tag_t res = vserver(VCMD_tag_migrate, TAG_USER2KERNEL(tag), NULL); + return TAG_KERNEL2USER(res); } diff --git a/lib/syscall_tagmigrate.c b/lib/syscall_tagmigrate.c index d5a9e46..3f03c76 100644 --- a/lib/syscall_tagmigrate.c +++ b/lib/syscall_tagmigrate.c @@ -1,4 +1,4 @@ -// $Id$ --*- c++ -*-- +// $Id: syscall_tagmigrate.c 2674 2008-01-27 07:55:13Z dhozac $ --*- c++ -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // diff --git a/lib/syscall_tasktag-v23.hc b/lib/syscall_tasktag-v23.hc index e01b35a..a37681d 100644 --- a/lib/syscall_tasktag-v23.hc +++ b/lib/syscall_tasktag-v23.hc @@ -1,4 +1,4 @@ -// $Id$ --*- c++ -*-- +// $Id: syscall_tasktag-v23.hc 2674 2008-01-27 07:55:13Z dhozac $ --*- c++ -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // diff --git a/lib/syscall_tasktag.c b/lib/syscall_tasktag.c index f5d6c35..3d36c12 100644 --- a/lib/syscall_tasktag.c +++ b/lib/syscall_tasktag.c @@ -1,4 +1,4 @@ -// $Id$ --*- c++ -*-- +// $Id: syscall_tasktag.c 2674 2008-01-27 07:55:13Z dhozac $ --*- c++ -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // diff --git a/lib/syscall_unsetmapping-v21.hc b/lib/syscall_unsetmapping-v21.hc new file mode 100644 index 0000000..062e189 --- /dev/null +++ b/lib/syscall_unsetmapping-v21.hc @@ -0,0 +1,33 @@ +// $Id: syscall_unsetmapping-v21.hc 2674 2008-01-27 07:55:13Z dhozac $ --*- c -*-- + +// Copyright (C) 2004 Enrico Scholz +// Copyright (C) 2006 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; 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. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +static inline ALWAYSINLINE int +vc_unset_mapping_v21(xid_t xid, const char *device, const char *target, uint32_t flags) +{ + struct vcmd_set_mapping_v0 data = { + .device = device, + .target = target, + .flags = flags + }; + return vserver(VCMD_unset_mapping, xid, &data); +} diff --git a/lib/syscall_unsetmapping.c b/lib/syscall_unsetmapping.c new file mode 100644 index 0000000..8403b38 --- /dev/null +++ b/lib/syscall_unsetmapping.c @@ -0,0 +1,38 @@ +// $Id: syscall_unsetmapping.c 2674 2008-01-27 07:55:13Z dhozac $ --*- c -*-- + +// Copyright (C) 2004 Enrico Scholz +// Copyright (C) 2006 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; 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. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "vserver.h" +#include "vserver-internal.h" +#include "virtual.h" + +#if defined(VC_ENABLE_API_V21) +# include "syscall_unsetmapping-v21.hc" +#endif + +#if defined(VC_ENABLE_API_V21) +int +vc_unset_mapping(xid_t xid, const char *device, const char *target, uint32_t flags) +{ + CALL_VC(CALL_VC_V21(vc_unset_mapping, xid, device, target, flags)); +} +#endif diff --git a/lib/tagopt2tag.c b/lib/tagopt2tag.c index 7f4b6aa..fc23f9f 100644 --- a/lib/tagopt2tag.c +++ b/lib/tagopt2tag.c @@ -1,4 +1,4 @@ -// $Id$ --*- c -*-- +// $Id: tagopt2tag.c 2674 2008-01-27 07:55:13Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // Copyright (C) 2007 Daniel Hokka Zakrisson diff --git a/lib/val2text.hc b/lib/val2text.hc index d723d6b..5cb2643 100644 --- a/lib/val2text.hc +++ b/lib/val2text.hc @@ -1,4 +1,4 @@ -// $Id: val2text.hc 1544 2004-05-08 01:27:48Z ensc $ --*- c -*-- +// $Id: val2text.hc 2651 2008-01-03 15:33:01Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // @@ -67,10 +67,11 @@ \ if (idx==-1) { \ size_t i; \ - for (i=0; i * @@ -211,6 +211,8 @@ #define VC_VXC_ADMIN_MAPPER 0x00200000ull #define VC_VXC_ADMIN_CLOOP 0x00400000ull +#define VC_VXC_KTHREAD 0x01000000ull + // the scheduler flags #define VC_VXSM_FILL_RATE 0x0001 @@ -237,6 +239,7 @@ #define VC_NXF_SINGLE_IP 0x00000100ull #define VC_NXF_LBACK_REMAP 0x00000200ull +#define VC_NXF_LBACK_ALLOW 0x00000400ull #define VC_NXF_HIDE_NETIF 0x02000000ull #define VC_NXF_HIDE_LBACK 0x04000000ull @@ -249,6 +252,8 @@ // the network capabilities +#define VC_NXC_TUN_CREATE 0x00000001ull + #define VC_NXC_RAW_ICMP 0x00000100ull @@ -306,7 +311,15 @@ #ifndef CLONE_NEWIPC # define CLONE_NEWIPC 0x08000000 #endif - +#ifndef CLONE_NEWUSER +# define CLONE_NEWUSER 0x10000000 +#endif +#ifndef CLONE_NEWPID +# define CLONE_NEWPID 0x20000000 +#endif +#ifndef CLONE_NEWNET +# define CLONE_NEWNET 0x40000000 +#endif #define VC_BAD_PERSONALITY ((uint_least32_t)(-1)) @@ -632,20 +645,26 @@ extern "C" { uint16_t vna_flags; uint16_t vna_prefix; uint16_t vna_parent; - union { - struct { - struct in_addr ip; - struct in_addr mask; - } ipv4; - struct { - struct in6_addr ip; - struct in6_addr mask; - } ipv6; - } u; -#define vna_v4_ip u.ipv4.ip -#define vna_v4_mask u.ipv4.mask -#define vna_v6_ip u.ipv6.ip -#define vna_v6_mask u.ipv6.mask + struct { + union { + struct in_addr v4; + struct in6_addr v6; + } ip; + union { + struct in_addr v4; + struct in6_addr v6; + } ip2; + union { + struct in_addr v4; + struct in6_addr v6; + } mask; + } s; +#define vna_v4_ip s.ip.v4 +#define vna_v4_ip2 s.ip2.v4 +#define vna_v4_mask s.mask.v4 +#define vna_v6_ip s.ip.v6 +#define vna_v6_ip2 s.ip2.v6 +#define vna_v6_mask s.mask.v6 }; struct vc_net_flags { @@ -813,6 +832,10 @@ extern "C" { /* misc. syscalls */ int vc_set_mapping(xid_t xid, const char *device, const char *target, uint32_t flags); + int vc_unset_mapping(xid_t xid, const char *device, const char *target, uint32_t flags); + + int vc_get_badness(xid_t xid, int64_t *badness); + int vc_set_badness(xid_t xid, int64_t badness); /** \brief Information about parsing errors diff --git a/lib_internal/Makefile-files b/lib_internal/Makefile-files index c1d44b6..b4dfbbc 100644 --- a/lib_internal/Makefile-files +++ b/lib_internal/Makefile-files @@ -1,4 +1,4 @@ -## $Id: Makefile-files 2579 2007-08-08 20:47:12Z dhozac $ -*- makefile -*- +## $Id: Makefile-files 2685 2008-02-21 23:22:23Z ensc $ -*- makefile -*- ## Copyright (C) 2003,2004 Enrico Scholz ## @@ -52,6 +52,9 @@ endif noinst_HEADERS += \ lib_internal/coreassert.h \ + lib_internal/crypto-wrapper.h \ + lib_internal/crypto-wrapper-nss.h \ + lib_internal/crypto-wrapper-beecrypt.h \ lib_internal/errinfo.h \ lib_internal/jail.h \ lib_internal/matchlist.h \ diff --git a/lib_internal/crypto-wrapper-beecrypt.h b/lib_internal/crypto-wrapper-beecrypt.h new file mode 100644 index 0000000..bfd455a --- /dev/null +++ b/lib_internal/crypto-wrapper-beecrypt.h @@ -0,0 +1,130 @@ +/* --*- c -*-- + * Copyright (C) 2008 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 and/or 3 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, see . + */ + +#ifndef H_UTIL_VSERVER_LIB_INTERNAL_CRYPTO_WRAPPER_BEECRYPT_H +#define H_UTIL_VSERVER_LIB_INTERNAL_CRYPTO_WRAPPER_BEECRYPT_H + +#include +#include + +typedef hashFunction ensc_hash_method; +typedef hashFunctionContext ensc_hash_context; + +inline static void +ensc_crypto_init(void) +{ +} + +inline static ensc_hash_method const * +ensc_crypto_hash_get_default(void) +{ + return hashFunctionDefault(); +} + +inline static ensc_hash_method const * +ensc_crypto_hash_find(char const *id_c) +{ + char *id = strdupa(id_c); + char *ptr = id; + char const *name; + + while (*ptr) { + *ptr = tolower(*ptr); + ++ptr; + } + + ptr = id; + while ((ptr=strchr(ptr, '-'))!=NULL) + memmove(ptr, ptr+1, strlen(ptr)); + + if (strcmp(id, "md2")==0) + name = "MD2"; + else if (strcmp(id, "md5")==0) + name = "MD5"; + else if (strcmp(id, "sha1")==0) + name = "SHA-1"; + else if (strcasecmp(id, "sha256")==0) + name = "SHA-256"; +#if 0 + /* sha-384 in beecrypt seems to be broken; digestsize is reported as + * 64 there although 48 is the correct value */ + else if (strcasecmp(id, "sha384")==0) + name = "SHA-384"; +#endif + else if (strcasecmp(id, "sha512")==0) + name = "SHA-512"; + else + name = NULL; + + return hashFunctionFind(name); +} + +inline static char const * +ensc_crypto_hash_get_name(ensc_hash_method const *m) +{ + return m->name; +} + +inline static size_t +ensc_crypto_hash_get_digestsize(ensc_hash_method const *m) +{ + return m->digestsize; +} + + + +inline static size_t +ensc_crypto_hashctx_get_digestsize(ensc_hash_context const *ctx) +{ + return ensc_crypto_hash_get_digestsize(ctx->algo); +} + +inline static int +ensc_crypto_hashctx_get_digest(ensc_hash_context *ctx, void *result, + size_t *res_len, size_t UNUSED max_res_len) +{ + int rc = hashFunctionContextDigest(ctx, result); + if (res_len) + *res_len = ctx->algo->digestsize; + + return rc; +} + +inline static int +ensc_crypto_hashctx_update(ensc_hash_context *ctx, void const *src, size_t len) +{ + return hashFunctionContextUpdate(ctx, src, len); +} + +inline static int +ensc_crypto_hashctx_init(ensc_hash_context *ctx, ensc_hash_method const *m) +{ + return hashFunctionContextInit(ctx, m); +} + +inline static int +ensc_crypto_hashctx_reset(ensc_hash_context *ctx) +{ + return hashFunctionContextReset(ctx); +} + +inline static void +ensc_crypto_hashctx_free(ensc_hash_context *ctx) +{ + hashFunctionContextFree(ctx); +} + +#endif /* H_UTIL_VSERVER_LIB_INTERNAL_CRYPTO_WRAPPER_BEECRYPT_H */ diff --git a/lib_internal/crypto-wrapper-nss.h b/lib_internal/crypto-wrapper-nss.h new file mode 100644 index 0000000..ae0128d --- /dev/null +++ b/lib_internal/crypto-wrapper-nss.h @@ -0,0 +1,176 @@ +/* --*- c -*-- + * Copyright (C) 2008 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 3 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, see . + */ + +#ifndef H_UTIL_VSERVER_LIB_INTERNAL_CRYPTO_WRAPPER_NSS_H +#define H_UTIL_VSERVER_LIB_INTERNAL_CRYPTO_WRAPPER_NSS_H + +#include +#include +#include + +#include "util-cast.h" + +typedef struct SECHashObjectStr ensc_hash_method; +typedef struct HASHContextStr *ensc_hash_context; + +inline static int +ensc_crypto_init(void) +{ + NSS_NoDB_Init(NULL); + return 0; +} + +inline static ensc_hash_method const * +ensc_crypto_hash_get_default(void) +{ + return HASH_GetHashObject(SEC_OID_SHA1); +} + +inline static ensc_hash_method const * +ensc_crypto_hash_find(char const *id_c) +{ + SECOidTag oid; + +#if 1 + char *id = strdupa(id_c); + char *ptr = id; + + while (*ptr) { + *ptr = tolower(*ptr); + ++ptr; + } + + ptr = id; + while ((ptr=strchr(ptr, '-'))!=NULL) + memmove(ptr, ptr+1, strlen(ptr)); + + if (strcmp(id, "md2")==0) + oid = SEC_OID_MD2; + else if (strcmp(id, "md5")==0) + oid = SEC_OID_MD5; + else if (strcmp(id, "sha1")==0) + oid = SEC_OID_SHA1; + else if (strcasecmp(id, "sha256")==0) + oid = SEC_OID_SHA256; + else if (strcasecmp(id, "sha384")==0) + oid = SEC_OID_SHA384; + else if (strcasecmp(id, "sha512")==0) + oid = SEC_OID_SHA512; + else + oid = SEC_OID_UNKNOWN; + +#else + struct SECItemStr const item = { + .type = ???, + .data = const_cast(unsigned char *)(static_cast(unsigned char const *)(id)), + .len = strlen(id) + }; + SECOidTag oid; + + oid = SECOID_FindOIDTag(&item); +#endif + + return HASH_GetHashObjectByOidTag(oid); +} + +inline static char const * +ensc_crypto_hash_get_name(ensc_hash_method const *m) +{ + char const * const NAMES[] = { + [HASH_AlgNULL] = "null", + [HASH_AlgMD2] = "md2", + [HASH_AlgMD5] = "md5", + [HASH_AlgSHA1] = "sha1", + [HASH_AlgSHA256] = "sha256", + [HASH_AlgSHA384] = "sha384", + [HASH_AlgSHA512] = "sha512", + }; + size_t idx = static_cast(size_t)(m->type); + + if (idx >= sizeof(NAMES)/sizeof(NAMES[0])) + return NULL; + + return NAMES[idx]; + /* TODO: use SECOID_FindOIDTagDescription()? */ +} + +inline static size_t +ensc_crypto_hash_get_digestsize(ensc_hash_method const *m) +{ + size_t const SIZES[] = { + [HASH_AlgMD2] = MD2_LENGTH, + [HASH_AlgMD5] = MD5_LENGTH, + [HASH_AlgSHA1] = SHA1_LENGTH, + [HASH_AlgSHA256] = SHA256_LENGTH, + [HASH_AlgSHA384] = SHA384_LENGTH, + [HASH_AlgSHA512] = SHA512_LENGTH, + }; + size_t idx = static_cast(size_t)(m->type); + + if (idx >= sizeof(SIZES)/sizeof(SIZES[0])) + return 0; + + return SIZES[idx]; +} + +inline static size_t +ensc_crypto_hashctx_get_digestsize(ensc_hash_context const *ctx) +{ + return ensc_crypto_hash_get_digestsize((*ctx)->hashobj); +} + +inline static int +ensc_crypto_hashctx_get_digest(ensc_hash_context *ctx, void *result, + size_t UNUSED *res_len_a, size_t UNUSED max_res_len) +{ + unsigned int res_len; + + HASH_End(*ctx, result, &res_len, max_res_len); + if (res_len_a) + *res_len_a = res_len; + + return 0; +} + +inline static int +ensc_crypto_hashctx_init(ensc_hash_context *ctx, ensc_hash_method const *m) +{ + *ctx = HASH_Create(m->type); + return *ctx==NULL ? -1 : 0; +} + +inline static int +ensc_crypto_hashctx_update(ensc_hash_context *ctx, void const *src, size_t len) +{ + HASH_Update(*ctx, src, len); + return 0; +} + +inline static int +ensc_crypto_hashctx_reset(ensc_hash_context *ctx) +{ + HASH_Begin(*ctx); + return 0; +} + +inline static void +ensc_crypto_hashctx_free(ensc_hash_context *ctx) +{ + HASH_Destroy(*ctx); + *ctx = NULL; +} + +#endif /* H_UTIL_VSERVER_LIB_INTERNAL_CRYPTO_WRAPPER_NSS_H */ diff --git a/lib_internal/crypto-wrapper.h b/lib_internal/crypto-wrapper.h new file mode 100644 index 0000000..2201bf2 --- /dev/null +++ b/lib_internal/crypto-wrapper.h @@ -0,0 +1,31 @@ +/* --*- c -*-- + * Copyright (C) 2008 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 and/or 3 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, see . + */ + +#ifndef H_UTIL_VSERVER_LIB_INTERNAL_CRYPTO_WRAPPER_H +#define H_UTIL_VSERVER_LIB_INTERNAL_CRYPTO_WRAPPER_H + +#define ENSC_CRYPTO_API_NSS 1 +#define ENSC_CRYPTO_API_BEECRYPT 2 + +#if ENSC_CRYPTO_API == ENSC_CRYPTO_API_BEECRYPT +#include "crypto-wrapper-beecrypt.h" +#elif ENSC_CRYPTO_API == ENSC_CRYPTO_API_NSS +#include "crypto-wrapper-nss.h" +#else +#error undefined crypto API +#endif + +#endif /* H_UTIL_VSERVER_LIB_INTERNAL_CRYPTO_WRAPPER_H */ diff --git a/lib_internal/matchlist-appendfiles.c b/lib_internal/matchlist-appendfiles.c index d0e20ee..1eef1e1 100644 --- a/lib_internal/matchlist-appendfiles.c +++ b/lib_internal/matchlist-appendfiles.c @@ -1,16 +1,16 @@ -// $Id: matchlist-appendfiles.c 1423 2004-04-06 08:43:20Z ensc $ --*- c -*-- +// $Id: matchlist-appendfiles.c 2608 2007-09-03 07:42:17Z ensc $ --*- 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. @@ -38,17 +38,17 @@ determineCompareFunc(char const UNUSED *fname) void MatchList_appendFiles(struct MatchList *list, size_t idx, - char **files, size_t count, + char const **files, size_t count, bool auto_type) { struct MatchItem *ptr = list->data + idx; size_t i; - + assert(idx+count <= list->count); if (auto_type) { for (i=0; itype = stINCLUDE; ++file; break; case '~' : ptr->type = stSKIP; ++file; break; diff --git a/lib_internal/matchlist-initmanually.c b/lib_internal/matchlist-initmanually.c index 71ec191..ecc52cb 100644 --- a/lib_internal/matchlist-initmanually.c +++ b/lib_internal/matchlist-initmanually.c @@ -1,16 +1,16 @@ -// $Id: matchlist-initmanually.c 1954 2005-03-22 14:59:46Z ensc $ --*- c -*-- +// $Id: matchlist-initmanually.c 2608 2007-09-03 07:42:17Z ensc $ --*- 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. @@ -42,13 +42,13 @@ extern bool Global_doRenew() PURE CONST; static void readExcludeListFD(int fd, - char ***files, size_t *size, + char const ***files, size_t *size, char **buf) { off_t len; size_t lines = 0; char *ptr; - + if (fd==-1) return; // todo: message on verbose? len = Elseek(fd, 0, SEEK_END); @@ -80,7 +80,7 @@ readExcludeListFD(int fd, do { *tmp-- = '\0'; } while (tmp>ptr && *tmp==' '); - + if (tmp>ptr) (*files)[(*size)++] = ptr; } @@ -90,7 +90,7 @@ readExcludeListFD(int fd, static void readExcludeList(char const *filename, - char ***files, size_t *size, + char const ***files, size_t *size, char **buf) { int fd = open(filename, O_RDONLY); @@ -102,10 +102,10 @@ readExcludeList(char const *filename, static void getConfigfileList(char const *vserver, - char ***files, size_t *size, + char const ***files, size_t *size, char **buf) { - char tmpname[] = "/tmp/vunify.XXXXXX"; + char tmpname[] = "/tmp/vunify.XXXXXX"; pid_t pid; int fd = Emkstemp(tmpname); @@ -115,7 +115,7 @@ getConfigfileList(char const *vserver, if (pid==0) { char *args[10]; char const **ptr = (char const **)(args)+0; - + Edup2(fd, 1); //Eclose(0); if (fd!=1) Eclose(fd); @@ -129,7 +129,7 @@ getConfigfileList(char const *vserver, } else { int status; - + if (TEMP_FAILURE_RETRY(wait4(pid, &status, 0,0))==-1) { perror("wait4()"); exit(1); @@ -151,11 +151,11 @@ MatchList_initManually(struct MatchList *list, char const *vdir, char const *exclude_file) { char *buf[2] = { 0,0 }; - - char **fixed_files = 0; + + char const **fixed_files = 0; size_t fixed_count = 0; - char **expr_files = 0; + char const **expr_files = 0; size_t expr_count = 0; size_t len; @@ -167,7 +167,7 @@ MatchList_initManually(struct MatchList *list, } else len = strlen(vdir); - + if (Global_getVerbosity()>=1) { WRITE_MSG(1, "Initializing exclude-list for "); Vwrite(1, vdir, len); diff --git a/lib_internal/matchlist.h b/lib_internal/matchlist.h index ea01702..1dd3e9d 100644 --- a/lib_internal/matchlist.h +++ b/lib_internal/matchlist.h @@ -1,16 +1,16 @@ -// $Id: matchlist.h 1912 2005-03-18 00:20:02Z ensc $ --*- c -*-- +// $Id: matchlist.h 2608 2007-09-03 07:42:17Z ensc $ --*- 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. @@ -52,12 +52,12 @@ struct MatchList struct MatchVserverInfo { - char const *name; + char const *name; vcCfgStyle style; PathInfo vdir; PathInfo appdir; - + bool use_pkgmgmt; }; @@ -73,7 +73,7 @@ void MatchList_initRefserverList(struct MatchList **, size_t *cnt, char const *dir) NONNULL((1,2,3)); void MatchList_destroy(struct MatchList *) NONNULL((1)); void MatchList_appendFiles(struct MatchList *, size_t idx, - char **files, size_t count, + char const **files, size_t count, bool auto_type) NONNULL((1,3)); MatchType MatchList_compare(struct MatchList const *, diff --git a/lib_internal/mkdir.c b/lib_internal/mkdir.c index 717de0e..c7fc156 100644 --- a/lib_internal/mkdir.c +++ b/lib_internal/mkdir.c @@ -1,4 +1,4 @@ -// $Id$ --*- c -*-- +// $Id: mkdir.c 2674 2008-01-27 07:55:13Z dhozac $ --*- c -*-- // Copyright (C) 2005 Enrico Scholz // diff --git a/lib_internal/sys_unshare.h b/lib_internal/sys_unshare.h index 05cc4d7..1d3bceb 100644 --- a/lib_internal/sys_unshare.h +++ b/lib_internal/sys_unshare.h @@ -1,4 +1,4 @@ -// $Id$ --*- c -*-- +// $Id: sys_unshare.h 2674 2008-01-27 07:55:13Z dhozac $ --*- c -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // @@ -81,7 +81,7 @@ _syscall1(int, sys_unshare, int, flags) inline static UNUSED ALWAYSINLINE int sys_unshare(int flags) { - return syscall(__NR_sys_clone, flags); + return syscall(__NR_sys_unshare, flags); } #endif diff --git a/lib_internal/testsuite/Makefile-files b/lib_internal/testsuite/Makefile-files index 7bf6ddd..a6da5cd 100644 --- a/lib_internal/testsuite/Makefile-files +++ b/lib_internal/testsuite/Makefile-files @@ -1,4 +1,4 @@ -## $Id: Makefile-files 2569 2007-07-22 17:24:29Z dhozac $ --*- makefile -*-- +## $Id: Makefile-files 2685 2008-02-21 23:22:23Z ensc $ --*- makefile -*-- ## Copyright (C) 2004 Enrico Scholz ## @@ -36,10 +36,21 @@ TESTS += lib_internal/testsuite/filecfg-ml \ lib_internal/testsuite/matchlist-gnu endif +if ENSC_HAVE_CRYPTO +check_PROGRAMS += lib_internal/testsuite/crypto \ + lib_internal/testsuite/crypto-speed +TESTS += lib_internal/testsuite/crypto +endif + DIETPROGS += lib_internal/testsuite/isnumber \ lib_internal/testsuite/sigbus \ lib_internal/testsuite/matchlist +if ENSC_CAN_CRYPTO_WITH_DIETLIBC +DIETPROGS += lib_internal/testsuite/crypto \ + lib_internal/testsuite/crypto-speed +endif + EXTRA_DIST += lib_internal/testsuite/copy-check TESTS_ENVIRONMENT += libinternaltestsuitedir=$(top_builddir)/lib_internal/testsuite @@ -79,3 +90,18 @@ lib_internal_testsuite_matchlist_CPPFLAGS = $(AM_CPPFLAGS) # see note above lib_internal_testsuite_matchlist_gnu_SOURCES = lib_internal/testsuite/matchlist.c lib_internal_testsuite_matchlist_gnu_LDADD = $(LIBINTERNAL_GLIBC) lib_internal_testsuite_matchlist_gnu_CPPFLAGS = $(AM_CPPFLAGS) # see note above + +if ENSC_HAVE_CRYPTO +lib_internal_testsuite_crypto_speed_SOURCES = lib_internal/testsuite/crypto-speed.c +lib_internal_testsuite_crypto_speed_CFLAGS = $(AM_CFLAGS) $(ENSC_CRYPTO_CFLAGS) +lib_internal_testsuite_crypto_speed_LDADD = $(ENSC_CRYPTO_LIB) -lrt + +lib_internal_testsuite_crypto_SOURCES = lib_internal/testsuite/crypto.c +lib_internal_testsuite_crypto_CFLAGS = $(AM_CFLAGS) $(ENSC_CRYPTO_CFLAGS) +lib_internal_testsuite_crypto_LDADD = $(ENSC_CRYPTO_LIB) + +if !ENSC_CAN_CRYPTO_WITH_DIETLIBC +lib_internal_testsuite_crypto_speed_LDFLAGS = -Wl,--as-needed +lib_internal_testsuite_crypto_LDFLAGS = -Wl,--as-needed +endif +endif diff --git a/lib_internal/testsuite/crypto-speed.c b/lib_internal/testsuite/crypto-speed.c new file mode 100644 index 0000000..0672a27 --- /dev/null +++ b/lib_internal/testsuite/crypto-speed.c @@ -0,0 +1,112 @@ +/* --*- c -*-- + * Copyright (C) 2008 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 and/or 3 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, see . + */ + +#define ENSC_TESTSUITE + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + + +static void +do_benchmark(char const *meth_name) +{ + struct { + size_t block_size; + size_t blocks; + } const DATA_SIZES[] = { + { 0, 1 }, + { 0, 1024*1024 }, + { 16, 1 }, + { 16, 1024*1024 }, + { 1024, 16 }, + { 1024, 16*1024 }, + { 1024*1024, 16 }, + { 1024*1024, 100 }, + { 1024*1024, 1000 } + }; + + ensc_hash_method const *m = ensc_crypto_hash_find(meth_name); + ensc_hash_context ctx; + size_t d_len = m ? ensc_crypto_hash_get_digestsize(m) : 0; + char digest[d_len]; + char * buf; + size_t i; + + assert(m); + assert(ensc_crypto_hashctx_init(&ctx, m)==0); + + for (i=0; i %2lu.%09lus, %'15llu bytes/s\n", + meth_name, DATA_SIZES[i].blocks, bs, + delta.tv_sec, delta.tv_nsec, (unsigned long long)(bps)); + } + + ensc_crypto_hashctx_free(&ctx); +} + +int main() +{ + char const * const METHS[] = { + "md5", "sha1", "sha256", "sha512", NULL + }; + char const * const * meth; + + ensc_crypto_init(); + setlocale(LC_NUMERIC, ""); /* needed for the thousands grouping */ + + for (meth=METHS+0; *meth; ++meth) + do_benchmark(*meth); +} diff --git a/lib_internal/testsuite/crypto.c b/lib_internal/testsuite/crypto.c new file mode 100644 index 0000000..5b11f97 --- /dev/null +++ b/lib_internal/testsuite/crypto.c @@ -0,0 +1,164 @@ +/* --*- c -*-- + * Copyright (C) 2008 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 and/or 3 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, see . + */ + +#define ENSC_TESTSUITE + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +static unsigned int +hex2digit(char c) +{ + if (c>='0' && c<='9') + return c-'0'; + c &= ~0x20; + if (c>='A' && c<='F') + return c-'A' + 10; + + assert(0); + return 0; +} + +static void +convert_digest_ascii2bin(void *dst_v, char const *digest, size_t d_len) +{ + unsigned char *dst = dst_v; + + while (d_len>0) { + *dst = hex2digit(*digest++)<<4; + *dst |= hex2digit(*digest++); + + ++dst; + --d_len; + } +} + +static void +test_digest(char const *name, size_t d_len, + void const *buf, size_t buf_len, + char const *digest) +{ + ensc_hash_method const *m = ensc_crypto_hash_find(name); + ensc_hash_context ctx; + unsigned char *exp_digest[d_len/8]; + unsigned char *bin_digest[d_len/8]; + size_t bin_digest_len; + size_t i; + + d_len /= 8; + convert_digest_ascii2bin(exp_digest, digest, d_len); + + assert(m); + assert(ensc_crypto_hash_get_digestsize(m)==d_len); + + { + char const *tmp_name = ensc_crypto_hash_get_name(m); + ensc_hash_method const *tmp_meth = tmp_name ? ensc_crypto_hash_find(tmp_name) : NULL; + + assert(tmp_name!=NULL); + assert(tmp_meth!=NULL); + assert(ensc_crypto_hash_get_digestsize(tmp_meth)==d_len); + } + + ensc_crypto_hashctx_init(&ctx, m); + assert(ensc_crypto_hashctx_get_digestsize(&ctx)==d_len); + + /* run it multiple times to test for correct reset/init behavior */ + for (i=0; i<3; ++i) { + assert(ensc_crypto_hashctx_reset(&ctx)==0); + assert(ensc_crypto_hashctx_update(&ctx, buf, buf_len)==0); + + switch (i) { + case 0: + case 2: + break; + + case 1: + assert(ensc_crypto_hashctx_update(&ctx, "gremlin", 7)==0); + break; + } + + assert(ensc_crypto_hashctx_get_digest(&ctx, bin_digest, &bin_digest_len, d_len)==0); + assert(bin_digest_len==d_len); + + + switch (i) { + case 0: + case 2: + assert(memcmp(exp_digest, bin_digest, d_len)==0); + break; + + case 1: + assert(memcmp(exp_digest, bin_digest, d_len)!=0); + break; + } + } + + ensc_crypto_hashctx_free(&ctx); +} + +int main() +{ + ensc_crypto_init(); + assert(ensc_crypto_hash_get_default()!=NULL); + + /* MD-5 */ + + test_digest("md5", 128, "", 0, "d41d8cd98f00b204e9800998ecf8427e"); + test_digest("md-5", 128, "", 0, "d41d8cd98f00b204e9800998ecf8427e"); + test_digest("MD5", 128, "", 0, "d41d8cd98f00b204e9800998ecf8427e"); + test_digest("MD-5", 128, "", 0, "d41d8cd98f00b204e9800998ecf8427e"); + + test_digest("md5", 128, "foo", 3, "acbd18db4cc2f85cedef654fccc4a4d8"); + + /* SHA-1 */ + test_digest("sha1", 160, "", 0, "da39a3ee5e6b4b0d3255bfef95601890afd80709"); + test_digest("sha-1", 160, "", 0, "da39a3ee5e6b4b0d3255bfef95601890afd80709"); + test_digest("SHA1", 160, "", 0, "da39a3ee5e6b4b0d3255bfef95601890afd80709"); + test_digest("SHA-1", 160, "", 0, "da39a3ee5e6b4b0d3255bfef95601890afd80709"); + + test_digest("sha1", 160, "foo", 3, "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"); + + /* SHA-256 */ + test_digest("sha256", 256, "", 0, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"); + test_digest("sha-256", 256, "", 0, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"); + test_digest("SHA256", 256, "", 0, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"); + test_digest("SHA-256", 256, "", 0, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"); + + test_digest("sha256", 256, "foo", 3, "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"); + +#if ENSC_CRYPTO_API != ENSC_CRYPTO_API_BEECRYPT /* see comments in crypto-wrapper-beecrypt.h */ + /* SHA-384 */ + test_digest("sha384", 384, "", 0, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b"); + test_digest("sha-384", 384, "", 0, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b"); + test_digest("SHA384", 384, "", 0, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b"); + test_digest("SHA-384", 384, "", 0, "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b"); + + test_digest("sha384", 384, "foo", 3, "98c11ffdfdd540676b1a137cb1a22b2a70350c9a44171d6b1180c6be5cbb2ee3f79d532c8a1dd9ef2e8e08e752a3babb"); +#endif + + /* SHA-512 */ + test_digest("sha512", 512, "", 0, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"); + test_digest("sha-512", 512, "", 0, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"); + test_digest("SHA512", 512, "", 0, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"); + test_digest("SHA-512", 512, "", 0, "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"); + + test_digest("sha512", 512, "foo", 3, "f7fbba6e0636f890e56fbbf3283e524c6fa3204ae298382d624741d0dc6638326e282c41be5e4254d8820772c5518a2c5a8c0c7f7eda19594a7eb539453e1ed7"); +} diff --git a/lib_internal/testsuite/matchlist.c b/lib_internal/testsuite/matchlist.c index d469345..979f712 100644 --- a/lib_internal/testsuite/matchlist.c +++ b/lib_internal/testsuite/matchlist.c @@ -1,4 +1,4 @@ -// $Id$ --*- c -*-- +// $Id: matchlist.c 2680 2008-02-21 22:33:21Z ensc $ --*- c -*-- // Copyright (C) 2007 Daniel Hokka Zakrisson // @@ -28,7 +28,7 @@ int wrapper_exit_code = 255; -int main(int argc, char *argv[]) +int main() { struct MatchList list; static const char *files[] = { @@ -61,7 +61,7 @@ int main(int argc, char *argv[]) return 0; else { char buf[(sizeof(result) * 8) / 3 + 2], *ptr; - ssize_t i; + size_t i; WRITE_MSG(1, "result = "); buf[sizeof(buf) - 1] = '\0'; for (i = 0, ptr = buf + sizeof(buf) - 2; i < (sizeof(result) * 8); i += 3, ptr--) diff --git a/lib_internal/util-io.h b/lib_internal/util-io.h index 061ba3d..d70b9f5 100644 --- a/lib_internal/util-io.h +++ b/lib_internal/util-io.h @@ -1,4 +1,4 @@ -// $Id: util-io.h 1954 2005-03-22 14:59:46Z ensc $ --*- c -*-- +// $Id: util-io.h 2650 2008-01-03 15:30:17Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // @@ -21,6 +21,7 @@ #include #include +#include "ensc_fmt/fmt.h" inline static void UNUSED Vwrite(int fd, char const *buf, size_t len) @@ -34,6 +35,17 @@ writeStr(int fd, char const *cmd) Vwrite(fd, cmd, strlen(cmd)); } +inline static void UNUSED +WRITE_INT(int fd, int num) +{ + char buf[sizeof(num)*3+2]; + size_t l; + + l = utilvserver_fmt_long(buf,num); + + Vwrite(fd, buf, l); +} + #define WRITE_MSG(FD,X) Vwrite(FD,X,sizeof(X)-1) #define WRITE_STR(FD,X) writeStr(FD,X) diff --git a/lib_internal/util-lockfile.c b/lib_internal/util-lockfile.c index 963c3b8..f270ec4 100644 --- a/lib_internal/util-lockfile.c +++ b/lib_internal/util-lockfile.c @@ -1,4 +1,4 @@ -// $Id: util-lockfile.c 1616 2004-07-02 23:34:52Z ensc $ --*- c -*-- +// $Id: util-lockfile.c 2678 2008-02-16 22:09:30Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // @@ -61,8 +61,8 @@ lockfile(int *fd, char const *filename, int op, long timeout, alarm(timeout); } - errstr = "flock()"; - while (flock(*fd, op)==-1) { + errstr = "lockf()"; + while (lockf(*fd, op, 0)==-1) { if ((errno!=EINTR && errno!=EINTR) || alarm_flag) goto err; } diff --git a/lib_internal/util-safechdir.h b/lib_internal/util-safechdir.h index 541cc9d..36b786a 100644 --- a/lib_internal/util-safechdir.h +++ b/lib_internal/util-safechdir.h @@ -1,16 +1,16 @@ -// $Id: util-safechdir.h 934 2004-02-18 04:42:38Z ensc $ --*- c -*-- +// $Id: util-safechdir.h 2608 2007-09-03 07:42:17Z ensc $ --*- 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. @@ -19,7 +19,8 @@ #ifndef H_UTIL_VSERVER_LIB_INTERNAL_UTIL_SAFECHDIR_H #define H_UTIL_VSERVER_LIB_INTERNAL_UTIL_SAFECHDIR_H -struct stat; +#include + int safeChdir(char const *, struct stat const *exp_stat) NONNULL((1,2)); #define EsafeChdir(PATH,EXP_STAT) \ diff --git a/man/Makefile-files b/man/Makefile-files index 12996ca..6fea6b0 100644 --- a/man/Makefile-files +++ b/man/Makefile-files @@ -1,4 +1,4 @@ -## $Id: Makefile-files 1192 2004-03-10 02:30:34Z ensc $ -*- makefile -*- +## $Id: Makefile-files 2631 2007-10-27 19:34:50Z dhozac $ -*- makefile -*- ## Copyright (C) 2003 Enrico Scholz ## @@ -28,6 +28,13 @@ man_pages = man/chbind.8 \ man/vserver-stat.8 \ man/vserver.8 \ man/vtop.8 +man_susbt_SRCS = man/vserver-build.8.pathsubst +man_gen_DTA = man/vserver-build.8 -man_MANS += $(man_pages) -EXTRA_DIST += $(man_pages) +man_MANS += $(man_pages) \ + $(man_gen_DTA) +EXTRA_DIST += $(man_pages) \ + $(man_susbt_SRCS) +CLEANFILES += $(man_gen_DTA) + +man/vserver-build.8: man/.vserver-build.8.pathsubst.stamp diff --git a/man/vserver-build.8.pathsubst b/man/vserver-build.8.pathsubst new file mode 100644 index 0000000..e989d06 --- /dev/null +++ b/man/vserver-build.8.pathsubst @@ -0,0 +1,173 @@ +.TH VSERVER-BUILD "8" "October 27, 2007" "vserver-build" "System Administration" +.SH "NAME" +vserver-build \- initializes a vserver +.SH SYNTAX +.B vserver-build +\fB\-m\fR \fImethod\fR \fB\-n\fR \fIname\fR [\fB\-\-force\fR] [\fB\-\-keep\fR] +[\fB\-\-rootdir\fR \fIdir\fR] [\fB\-\-pkgbase\fR \fIdir\fR] +\fIconfig options*\fR [\fB\-\-\fR] \fImethod arguments*\fR +.TP +\fB\-m\fR \fImethod\fR +Use build \fImethod\fR; see below for possible values. +.TP +\fB\-n\fR \fIname\fR +Name of vserver you are building. +.TP +\fB\-\-force\fR +Remove/rename already existing vservers with the same name. +.TP +\fB\-\-keep\fR +Do not delete generated files and directories if vserver build fails. +.TP +\fB\-\-rootdir\fR \fIdir\fR +Root vserver directory [default: @SYSCONFDIR@/vservers/.defaults/vdirbase]. +.TP +\fB\-\-pkgbase\fR \fIdir\fR +Package base directory [default: @VSERVERDIR@/.pkg]. +.SH "CONFIG OPTIONS" +.TP +\fB\-\-context\fR \fInum\fR +.IP +\&The static context of the vserver [default: none; one will be generated for you]. +The valid range is 2 through 49151. +.TP +\fB\-\-confdir\fR \fIdir\fR +.IP +\&The vserver configuration directory to use [default: @SYSCONFDIR@/vservers/]. +.TP +\fB\-\-lockfile\fR \fIfilename\fR +.IP +\&The lockfile to use [default: /var/run/vservers/]. +.TP +\fB\-\-hostname\fR \fIhostname\fR +.IP +\&Hostname of the vserver. +.TP +\fB\-\-netdev\fR \fIdevice\fR +.IP +\&The default interface to use for \fB--interface\fR. +.TP +\fB\-\-netbcast\fR \fIbroadcast\fR +.IP +\&Broadcast address to associate with the vserver. +.TP +\fB\-\-netmask\fR \fInetmask\fR|\fB\-\-netprefix\fR \fIprefixlen\fR +.IP +\&Sets the default netmask (a.b.c.d quadruple) or prefixlen (length of the +network). +.TP +\fB\-\-interface\fR [\fIname\-suffix\fR=][\fIdevice\fR:]\fIip\fR[/\fImask|prefixlen\fR] +.IP +\&Declares a network\-interface name and associated IP/netmask; this option can +be specified multiple times. +.TP +\fB\-\-flags\fR \fIflags+\fR +.IP +\&Sets comma\-separated list of flags; see lib/cflags-v13.c for a list. +.TP +\fB\-\-cpuset\fR \fIname\fR +.IP +\&Declares the CPUSET this vserver will run in [default: none] +.TP +\fB\-\-cpusetcpus\fR \fInumber[\-number][:exclusive]\fR +.IP +\&Sets which CPUs belong to the CPUSET, \fI:exclusive\fR is a flag (0|1) +prohibiting any other cpuset from using those CPUs. +.TP +\fB\-\-cpusetmems\fR \fInumber[\-number][:exclusive]\fR +.IP +\&Sets which memory pools belong to the CPUSET, \fI:exclusive\fR is a flag +(0|1) prohibiting any other cpuset from using those memory pools. +.TP +\fB\-\-cpusetvirt\fR +.IP +\&Virtualize the cpuset (the vserver will see only CPUs defined in the cpuset). +Requires kernel patch from http://www.bullopensource.org/cpuset/ +.TP +\fB\-\-initstyle\fR \fIstyle\fR +.IP +\&Configures the initstyle (e.g. minit, sysv, plain, gentoo) +.SH "METHODS" +.TP +\fBapt\-rpm\fR +.IP +\& \fB\-\-\fR \fB\-d\fR \fIdistribution\fR + +\&Installs the base\-packages of the given distribution with the help of +'\fBvapt\-get\fR' +.TP +\fByum\fR +.IP +\&\fB\-\-\fR \fB\-d\fR \fIdistribution\fR + +\&Installs the base\-packages of the given distribution with help of +'\fBvyum\fR' +.TP +\fBrpm\fR +.IP +\&\fB\-\-\fR [\fB\-d\fR \fIdistribution\fR] \fB\-\-empty\fR|([\fB\-\-force\fR] [\fB\-\-nodeps\fR] \fImanifest\fR)+ + +\&Installs lists of rpm\-packages +.TP +\fBskeleton\fR +.IP +\&\fB\-\-\fR [\fIcmd args*\fR] + +\&Installs a minimal skeleton filesystem, creates the configuration file +and calls an optional command +.TP +\fBdebootstrap\fR +.IP +\fB\-\-\fR \fB\-d\fR \fIdistribution\fR [\fB\-m\fR \fImirror\fR] [\fB\-s\fR \fIscript\fR] [\fB\-\-\fR \fIdebootstrap\-options*\fR] + +\&Bootstraps the vserver with Debian's 'debootstrap' package +.TP +\fBtemplate\fR +.IP +\&\fB\-\-\fR (\fB\-t\fR \fItarball\fR)+ [\fB\-d\fR \fIdistribution\fR] + +\&Installs a vserver using tarball(s) +.TP +\fBfai\fR +.IP +\&\fB\-\-\fR [\fB\-f\fR \fIfai_vserver\fR] [\fB\-n\fR \fInfsroot\fR] [\fB\-d\fR \fIfai_dir\fR] [\fB\-a\fR] + +\&Bootstraps the vserver with the Debian Fully Automatic Installation + +\fB\-f\fR means use the nfsroot and profile in the vserver \fIfai_vserver\fR + +\fB\-n\fR \fInfsroot\fR specifies the 'NFS' root explicitly + +\fB\-d\fR \fIfai_dir\fR specifies the location of the FAI profile + +the \fB\-f\fR option implies \fB\-n\fR and \fB\-d\fR are relative to the \fIfai_vserver\fR +.TP +\fBrsync\fR +.IP +\&\fB\-\-\fR [\fB\-d\fR \fIdistribution\fR] \fB\-\-source\fR \fIsource\fR [\fB\-o\fR \fIrsync option\fR]* + +\&Installs a vserver by rsyncing from \fIsource\fR to the guest root +.TP +\fBclone\fR +.IP +\&\fB\-\-\fR [\fB\-d\fR \fIdistribution\fR] \fB\-\-source\fR \fIsource\fR + +\&Clones a vserver by linking unified files and copying the rest +.SH "EXAMPLES" +.LP +# vserver kea build -m debootstrap --context 10 --hostname kea --interface eth0:192.168.0.44/32 -- -d etch +.SH "BUGS" +.LP +Please report bugs to vserver@list.linux\-vserver.org +.SH "AUTHORS" +.LP +This man page was written by Micah Anderson and based upon the helpful output from the program itself. +.SH "SEE ALSO" +.PP + chbind(8) chcontext(8) + rebootmgr(8) reducecap(8) + vps(8) vpstree(8) + vrpm(8) + vserver\-stat(8) + vtop(8) + diff --git a/man/vserver.8 b/man/vserver.8 index 6ea2052..c1c6702 100644 --- a/man/vserver.8 +++ b/man/vserver.8 @@ -1,74 +1,134 @@ -.TH "vserver" "8" "0.1.0" "Klavs Klavsen " "System Administration" +.TH VSERVER 8 "October 24, 2007" "util-vserver" "System Administration" .SH "NAME" .LP -vserver \- The vserver utility enables you to control different aspects of your vservers. -.SH "SYNTAX" -.LP -vserver [ options ] [vserver name] [options] - -.SH "DESCRIPTION" -.LP -vserver \- The vserver utility enables you to control different aspects of your vservers, such as stopping and starting them, and services within them. -.SH "OPTIONS" -.LP -.TP -\fBbuild\fR Create a virtual server by copying the packages of the root server -.TP -\fBenter\fR Enter in the virtual server context and starts a shell. Same as "vserver name exec /bin/sh\". -.TP -\fBexec\fR Exec a command in the virtual server context as root. -syntax: vserver name exec command ... -.TP -\fBsuexec\fR Exec a command in the virtual server context under some user id. -syntax: vserver name suexec userid command ... -.TP -\fBservice\fR Control a service inside a vserver. -syntax: vserver name service service\-name (start/stop/restart etc.) -.TP -\fBstart\fR Starts the various services in the vserver. -It uses the default runlevel found in the -.B /etc/inittab -file of the vserver. -.TP -\fBstop\fR Ends all services and kills the remaining processes. -.TP -\fBrunning\fR Tells if a virtual server is running. It returns proper exit code, so you can use it as a test. -.TP -\fBstatus\fR Tells various information about the state of a virtual server: -running status, number of running processes and uptime. -.TP -.I --nodev -do not configure the IP devices associated with the vserver. This -is useful to execute some commands on the vserver (or enter it) -without making it active on the network. Especially useful if you -have an active copy of the vserver moved to another server on the -network. -.TP -.I --silent -cuts most informative messages. - +vserver \- The vserver utility enables you to manage the state of vservers, including building, starting, stopping, etc. +.SH SYNTAX +.B vserver +[\fB-s|--sync\fR] [\fB-v|--verbose\fR] [\fB--silent\fR] [\-\-] \fIvserver\fR \fIcommand\fR [\fB--help\fR] \fIargs*\fR +.TP +\fB\-\-sync\fR - Perform synchronization with vshelper to ensure that the guest has been stopped +.TP +\fB\-\-verbose\fR - Makes things a lot louder. +.TP +\fB\-\-silent\fR - Removes most informative messages. +.TP +\fIvserver\fR - The name of a vserver. +.TP +\fIcommand\fR - One of the commands listed below. +.TP +\fB\-\-help\fR +.IP +provides additional help for provided \fIcommand\fR, for example: vserver - build --help +\fIargs\fR are the arguments that are possible for the different commands, see the +arguments for each \fIcommand\fR listed below +.SH "COMMANDS" +.TP +\fBstart\fR [\fB\-\-rescue\fR [\fB\-\-rescue\-init\fR] \fIprogram args\fR] +.IP +\&Starts the specified vserver. The optional argument \fB--rescue\fR starts the +vserver in rescue mode, which runs \fIprogram args*\fR to start the vserver +instead of whatever is configured. The optional argument \fB--rescue-init\fR +makes the command appear as PID 1 in the vserver. This can be used to start +/bin/bash to investigate why a vserver is not able to start correctly. +.TP +\fBstop\fR [\fB\-\-rescue\-init\fR] +.IP +\&Stops the specified vserver, and kills the remaining processes. The optional +argument \fB--rescue-init\fR can be used to stop a vserver that was started +with the option of the same name. +.TP +\fBrestart\fR +.IP +\&Restarts the specified vserver. This is the subsequent execution of a +synchronized 'stop' and a 'start'. +.TP +\fBcondrestart\fR +.IP +\&Restarts a running vserver. +.TP +\fBsuexec\fR \fIuser\fR \fIprogram args*\fR +.IP +\&Executes \fIprogram args*\fR as the specified \fIuser\fR in the vserver. +.TP +\fBexec\fR \fIprogram args*\fR +.IP +\&Executes \fIprogram args*\fR as the root user in the vserver. +.TP +\fBenter\fR +.IP +\&Executes the configured shell (default: /bin/bash if it exists) in the +vserver and allocates a pty. +.TP +\fBchkconfig\fR \fIchkconfig\-options*\fR +.IP +\&Modifies the init\-system; currently, only Red Hat's \fBchkconfig\fR is +supported. +.TP +\fBrunning\fR +.IP +\&Returns an exit code of 0 iff the vserver is running, 1 if not. +.TP +\fBstatus\fR +.IP +\&Provides some human readable status information about the vserver, and +succeeds iff the vserver is running. +.TP +\fBbuild\fR \fIbuildopts*\fR +.IP +\&Create a vserver from scratch, where the \fIbuildopts*\fR are a set of +options and a build method. As this option calls vserver-build, please see +vserver-build(8) for a complete listing of possible options and methods. +.TP +\fBdelete\fR +.IP +\&Remove a vserver. +.TP +\fBunify\fR [\fB\-R\fR] [\fIvunify\-opts*\fR] +.IP +\&Unify or de-unify the vserver with its reference vserver(s). +.TP +\fBpkg install\fR \fIpkg*\fR +.IP +\&Installs package(s) \fIpkg\fR in the vserver. +.TP +\fBapt\-get,apt\-config,apt\-cache\fR \fIapt\-opts*\fR +.IP +\&Execute the apt\-* command for the given vserver +.TP +\fBrpm\fR \fIrpm\-opts*\fR +.IP +\&Execute the \fBrpm\fR command for the given vserver. +.TP +\fBpkgmgmt\fR \fBexternalize\fR|\fBinternalize\fR [\fB\-y\fR] +.IP +\&Externalize or internalize the package\-management for the given vserver. +\'Externalize' means that package metadata and management tools (apt\-get,rpm) +are living in the host, while 'internalize' means that data and programs from +the vserver will be used. +.TP +\fBhashify\fR +.IP +\&Hashify the vserver. .SH "FILES" .LP \fI/usr/sbin/vserver\fP .P -\fI/etc/vservers/*.conf\fP +\fI/etc/vservers/*\fP .P -\fI/etc/vservers/*.sh\fP .P -\fI/vservers/*\fP - +\fI/var/lib/vservers/*\fP .SH "EXAMPLES" .LP Please contribute some, if you feel it's important. .SH "AUTHORS" .LP -This Man page was written by Klavs Klavsen and based upon the helpful output from the program itself and the documentation on the Virtual Server site +This man page was written by Micah Anderson and based upon the helpful output from the program itself. .SH "SEE ALSO" .LP chbind(8) chcontext(8) -newvserver(8) rebootmgr(8) reducecap(8) vps(8) vpstree(8) vrpm(8) +vserver\-build(8) vserver\-stat(8) vtop(8) diff --git a/scripts/Makefile-files b/scripts/Makefile-files index 76f385d..7863b88 100644 --- a/scripts/Makefile-files +++ b/scripts/Makefile-files @@ -1,4 +1,4 @@ -## $Id: Makefile-files 2558 2007-07-10 20:34:48Z dhozac $ -*- makefile -*- +## $Id: Makefile-files 2684 2008-02-21 23:11:45Z ensc $ -*- makefile -*- ## Copyright (C) 2003 Enrico Scholz ## @@ -28,6 +28,7 @@ AM_INSTALLCHECK_STD_OPTIONS_EXEMPT += \ scripts/vserver-wrapper \ scripts/vsysvwrapper \ scripts/vtop \ + scripts/h2ext-worker \ scripts/legacy/distrib-info \ scripts/legacy/vps \ scripts/legacy/save_s_context \ @@ -97,7 +98,8 @@ scripts_sbin_src_PRGS = scripts/chbind \ scripts/vsomething \ scripts/vtop \ scripts/vupdateworld \ - scripts/vyum + scripts/vyum \ + scripts/vmount scripts_sbin_gen_PRGS = scripts_sbincfg_gen_DTA = diff --git a/scripts/h2ext-worker b/scripts/h2ext-worker index 9f55675..7cd118d 100644 --- a/scripts/h2ext-worker +++ b/scripts/h2ext-worker @@ -1,5 +1,5 @@ #! /bin/bash -# $Id$ +# $Id: h2ext-worker 2674 2008-01-27 07:55:13Z dhozac $ # Copyright (C) 2007 Daniel Hokka Zakrisson # diff --git a/scripts/util-vserver-vars.pathsubst b/scripts/util-vserver-vars.pathsubst index e0bc7e6..8cae4f1 100644 --- a/scripts/util-vserver-vars.pathsubst +++ b/scripts/util-vserver-vars.pathsubst @@ -1,4 +1,4 @@ -# $Id: util-vserver-vars.pathsubst 2589 2007-08-16 03:06:50Z dhozac $ --*- sh -*-- +# $Id: util-vserver-vars.pathsubst 2692 2008-03-01 00:22:34Z dhozac $ --*- sh -*-- PACKAGE='@PACKAGE@' PACKAGE_BUGREPORT='@PACKAGE_BUGREPORT@' @@ -70,6 +70,7 @@ _SECURE_MOUNT="$__PKGLIBDIR/secure-mount" _SETATTR="$__SBINDIR/setattr" _SHOWPERM="$__LEGACYDIR/showperm" _START_VSERVERS="$__PKGLIBDIR/start-vservers" +_TUNCTL="$__PKGLIBDIR/tunctl" _VAPT_GET="$__SBINDIR/vapt-get" _VAPT_GET_WORKER="$__PKGLIBDIR/vapt-get-worker" _VATTRIBUTE="$__SBINDIR/vattribute" @@ -81,6 +82,7 @@ _VDU="$__SBINDIR/vdu" _VHASHIFY="$__PKGLIBDIR/vhashify" _VKILL="$__SBINDIR/vkill" _VLIMIT="$__SBINDIR/vlimit" +_VMEMCTRL="$__SBINDIR/vmemctrl" _VNAMESPACE="$__SBINDIR/vnamespace" _VPKG="$__PKGLIBDIR/vpkg" _VPROCUNHIDE="$__PKGLIBDIR/vprocunhide" @@ -98,6 +100,7 @@ _VSERVERKILLALL="$__LEGACYDIR/vserverkillall" _VSHELPER="$__PKGLIBDIR/vshelper" _VSHELPER_SYNC="$__PKGLIBDIR/vshelper-sync" _VSOMETHING="$__SBINDIR/vsomething" +_VSPACE="$__SBINDIR/vspace" _VSYSCTL="$__PKGLIBDIR/vsysctl" _VTAG="$__SBINDIR/vtag" _VWAIT="$__SBINDIR/vwait" @@ -117,6 +120,7 @@ _DIRNAME="@DIRNAME@" _EGREP="@EGREP@" _ENV="@ENV@" _FILE="@FILE@" +_FSCK="@FSCK@" _GREP="@GREP@" _GZIP="@GZIP@" _IP="@IP@" diff --git a/scripts/vdispatch-conf b/scripts/vdispatch-conf index 54e4bd4..0452dae 100755 --- a/scripts/vdispatch-conf +++ b/scripts/vdispatch-conf @@ -1,5 +1,5 @@ #!/bin/bash -# $Id: vdispatch-conf 2486 2007-02-05 18:08:17Z hollow $ +# $Id: vdispatch-conf 2635 2007-11-17 23:52:59Z hollow $ # Copyright (C) 2006 Benedikt Boehm # @@ -58,15 +58,24 @@ while true; do (--debug) send_through=( "${send_through[@]}" "$1" ); set -x;; (--quiet|-q) send_through=( "${send_through[@]}" "$1" );; (--all) vsomething_opts=( "${vsomething_opts[@]}" "$1" );; - (--) shift; break;; + (--) test ${#vsomething_opts[@]} -eq 0 && shift; break;; (*) echo $"vdispatch-conf: internal error; arg=='$1'" >&2; exit 1;; esac shift done -VSOMETHING_TITLE=vemerge +declare -a vserver_names + +while [ $# -gt 0 ]; do + case "$1" in + (--) shift; break;; + (*) vserver_names=( "${vserver_names[@]}" "$1" );; + esac + shift +done + +VSOMETHING_TITLE=vdispatch-conf VSOMETHING_PKGMGMT=1 export VSOMETHING_TITLE VSOMETHING_PKGMGMT - -exec $_VSOMETHING "${send_through[@]}" dispatch-conf "${vsomething_opts[@]}" "$@" +exec $_VSOMETHING "${send_through[@]}" dispatch-conf "${vsomething_opts[@]}" "${vserver_names[@]}" -- "$@" diff --git a/scripts/vemerge b/scripts/vemerge index 639fdd1..69a314c 100755 --- a/scripts/vemerge +++ b/scripts/vemerge @@ -1,5 +1,5 @@ #!/bin/bash -# $Id: vemerge 2363 2006-11-03 14:36:23Z hollow $ +# $Id: vemerge 2635 2007-11-17 23:52:59Z hollow $ # Copyright (C) 2006 Benedikt Boehm # @@ -58,16 +58,24 @@ while true; do (--debug) send_through=( "${send_through[@]}" "$1" ); set -x;; (--quiet|-q) send_through=( "${send_through[@]}" "$1" );; (--all) vsomething_opts=( "${vsomething_opts[@]}" "$1" );; - (--) shift; break;; + (--) test ${#vsomething_opts[@]} -eq 0 && shift; break;; (*) echo $"vemerge: internal error; arg=='$1'" >&2; exit 1;; esac shift done +declare -a vserver_names + +while [ $# -gt 0 ]; do + case "$1" in + (--) shift; break;; + (*) vserver_names=( "${vserver_names[@]}" "$1" );; + esac + shift +done + VSOMETHING_TITLE=vemerge VSOMETHING_PKGMGMT=1 export VSOMETHING_TITLE VSOMETHING_PKGMGMT - -test ${#vsomething_opts[@]} -eq 0 || vsomething_opts=( "${vsomething_opts[@]}" -- ) -exec $_VSOMETHING "${send_through[@]}" emerge "${vsomething_opts[@]}" "$@" +exec $_VSOMETHING "${send_through[@]}" emerge "${vsomething_opts[@]}" "${vserver_names[@]}" -- "$@" diff --git a/scripts/vesync b/scripts/vesync index b722168..8bcc98e 100755 --- a/scripts/vesync +++ b/scripts/vesync @@ -1,5 +1,5 @@ #!/bin/bash -# $Id: vesync 2486 2007-02-05 18:08:17Z hollow $ +# $Id: vesync 2635 2007-11-17 23:52:59Z hollow $ # Copyright (C) 2006 Benedikt Boehm # @@ -64,12 +64,22 @@ while true; do (--overlay) overlay="${2%/}";; (--overlay-host) overlay_host="${2%/}";; (--overlay-only) overlay_only=1;; - (--) shift; break;; + (--) test ${#vsomething_opts[@]} -eq 0 && shift; break;; (*) echo $"vesync: internal error; arg=='$1'" >&2; exit 1;; esac shift done +declare -a vserver_names + +while [ $# -gt 0 ]; do + case "$1" in + (--) shift; break;; + (*) vserver_names=( "${vserver_names[@]}" "$1" );; + esac + shift +done + VSOMETHING_TITLE=vesync VSOMETHING_PKGMGMT=1 @@ -78,12 +88,12 @@ export VSOMETHING_TITLE VSOMETHING_PKGMGMT ret=0 test $overlay_only -eq 0 && \ - $_VSOMETHING "${send_through[@]}" emerge "${vsomething_opts[@]}" "$@" -- --metadata + $_VSOMETHING "${send_through[@]}" emerge "${vsomething_opts[@]}" "${vserver_names[@]}" -- --metadata ret=$? test -n "$overlay" -a -n "$overlay_host" && \ - $_VSOMETHING "${send_through[@]}" rsync "${vsomething_opts[@]}" "$@" -- \ + $_VSOMETHING "${send_through[@]}" rsync "${vsomething_opts[@]}" "${vserver_names[@]}" -- \ -rtW --progress --delete --delete-after "${overlay_host}/" "${overlay}/" test $? -eq 0 -a $ret -eq 0 diff --git a/scripts/vmount b/scripts/vmount new file mode 100755 index 0000000..3f0dfad --- /dev/null +++ b/scripts/vmount @@ -0,0 +1,104 @@ +#!/bin/bash +# $Id: vmount 2682 2008-02-21 23:10:34Z ensc $ + +# Copyright (C) 2007 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; 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. + +: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars} +test -e "$UTIL_VSERVER_VARS" || { + echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2 + exit 1 +} +. "$UTIL_VSERVER_VARS" +. "$_LIB_FUNCTIONS" + + +function showHelp() +{ + echo \ +$"Usage: $0 -- [-o options] [--bind|--rbind] + [-t ] [-a] [-n] [--move] + [ []] + + ... what to mount, this is relative to the host's root + ... where to mount it, this is relative to the guest's root + +Report bugs to <$PACKAGE_BUGREPORT>." + exit 0 +} + +function showVersion() +{ + echo \ +$"vmount $PACKAGE_VERSION -- mount for guests +This program is part of $PACKAGE_STRING + +Copyright (C) 2007 Daniel Hokka Zakrisson +This program is free software; you may redistribute it under the terms of +the GNU General Public License. This program has absolutely no warranty." + exit 0 +} + + +declare -a guests +while test $# -gt 0; do + case "$1" in + (--) shift; break;; + (-*) break; + (*) + _setVserverDir "$1" + guests=( "${guests[@]}" "$VSERVER_DIR" ) + ;; + esac + shift +done + +tmp=$(getopt -o +o:t:an --long help,version,debug,bind,rbind,move -n "$0" -- "$@") || exit 1 +eval set -- "$tmp" + +declare -a options + +while true; do + case "$1" in + (--help) showHelp $0 ;; + (--version) showVersion ;; + (--debug) set -x;; + (--bind|--rbind|--move|-n|-a) + options=( "${options[@]}" "$1" ) + ;; + (-t|-o) options=( "${options[@]}" "$1" "$2" ) + shift + ;; + (--) shift; break;; + (*) echo $"vmount: internal error; arg=='$1'" >&2; exit 1;; + esac + shift +done + +case "x$1" in + (x/*|x) ;; + (*) panic $"vmount: the source must be an absolute path";; +esac + +rc=0 +for guest in "${guests[@]}"; do + pushd "$guest/vdir" &> /dev/null + callInNamespace "$guest" \ + $_SECURE_MOUNT --chroot --fstab "$guest/fstab" "${options[@]}" "$@" + test "$?" -eq 0 || rc=$? + popd &> /dev/null +done + +exit $rc diff --git a/scripts/vserver b/scripts/vserver index 4898a14..bcb936e 100755 --- a/scripts/vserver +++ b/scripts/vserver @@ -1,5 +1,5 @@ #! /bin/bash -# $Id: vserver 2566 2007-07-18 17:24:36Z dhozac $ +# $Id: vserver 2661 2008-01-13 18:26:41Z dhozac $ # Copyright (C) 2003,2004,2005 Enrico Scholz # @@ -31,21 +31,22 @@ test -e "$UTIL_VSERVER_VARS" || { function showHelp() { echo \ -$"Usage: $(basename $0) [-s|--sync] [-v|--verbose] [--silent] +$"Usage: $(basename $0) [-s|--sync] [-v|--verbose] [--silent] [--debug] [--] * is the name of a vserver. Possible commands are: - start [--rescue [--rescue-init]] [ *] + start [--rescue [--rescue-init] *]] ... starts the specified vserver - stop ... stops the specified vserver + stop [--rescue-init] + ... stops the specified vserver restart ... restarts the specified vserver; this is the subsequent execution of a synchronized 'stop' and a 'start' condrestart ... restarts the vserver when it is running already - suexec + suexec ... executes a command as the specified user in the vserver - exec + exec ... executes a command as root in the vserver enter ... executes the configured shell in the vserver chkconfig @@ -56,7 +57,8 @@ Possible commands are: the vserver, and succeeds iff the vserver is running build * - ... builds a new vserver from scratch + ... builds a new vserver from scratch, see + vserver ... build --help for details delete ... remove a vserver unify [-R] * @@ -197,11 +199,11 @@ Possible solutions: _setVserverName # Create a new namespace when starting the guest -test "$2" != start -o -n "$OPTION_NONAMESPACE" || isAvoidNamespace "$VSERVER_DIR" || \ +test "$cmd" != start -o -n "$OPTION_NONAMESPACE" || isAvoidNamespace "$VSERVER_DIR" || \ exec $_VNAMESPACE --new -- $_VSERVER ----nonamespace "${OPTIONS_ORIG[@]}" # Enter the namespace early so we can test for files inside the guest -test "$2" != enter -a "$2" != stop || \ +test "$cmd" != enter -a "$cmd" != stop || \ test -n "$OPTION_NONAMESPACE" || isAvoidNamespace "$VSERVER_DIR" || \ ! isVserverRunning "$VSERVER_DIR" || \ exec $_VNAMESPACE --enter "$VSERVER_DIR" -- $_VSERVER ----nonamespace "${OPTIONS_ORIG[@]}" diff --git a/scripts/vserver-build b/scripts/vserver-build index fc78e6f..dc9100f 100755 --- a/scripts/vserver-build +++ b/scripts/vserver-build @@ -1,5 +1,5 @@ #! /bin/bash -# $Id: vserver-build 2468 2007-01-21 20:05:19Z dhozac $ +# $Id: vserver-build 2644 2007-12-19 14:28:40Z dhozac $ # Copyright (C) 2003,2004,2005 Enrico Scholz # @@ -74,7 +74,7 @@ Possible methods are: the -f option implies -n and -d are relative to the rsync ... -- [-d ] --source [-o ]* ... installs a guest by rsyncing from to the guest root - clone ... -- [-d ] --source + clone ... -- [-d ] --source [--exclude-from ] ... clones a guest by linking unified files and copying the rest Please report bugs to $PACKAGE_BUGREPORT" diff --git a/scripts/vserver-build.clone b/scripts/vserver-build.clone index 7cac25b..dc55693 100644 --- a/scripts/vserver-build.clone +++ b/scripts/vserver-build.clone @@ -1,4 +1,4 @@ -# $Id: vserver-build.clone 2494 2007-02-11 00:45:04Z dhozac $ --*- sh -*-- +# $Id: vserver-build.clone 2644 2007-12-19 14:28:40Z dhozac $ --*- sh -*-- # Copyright (C) 2003 Enrico Scholz # @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -tmp=$(getopt -o '+d:s:o:' --long debug,pkgmgmt,source: -n "$0" -- "$@") || exit 1 +tmp=$(getopt -o '+d:s:o:X:' --long debug,pkgmgmt,source:,exclude-from: -n "$0" -- "$@") || exit 1 eval set -- "$tmp" . "$_LIB_VSERVER_BUILD_FUNCTIONS_PKGMGMT" @@ -23,12 +23,15 @@ eval set -- "$tmp" DISTRIBUTION=: use_pkgmgmt= SOURCE= +EXCLUDES= while true; do case "$1" in -d) DISTRIBUTION=$2; shift;; --debug) set -x;; --pkgmgmt) use_pkgmgmt=1;; -s|--source) SOURCE=$2; shift;; + -X|--exclude-from) + EXCLUDES=$2; shift;; --) shift; break ;; *) echo "vserver-build.clone: internal error: unrecognized option '$1'" >&2 exit 1 @@ -63,7 +66,9 @@ setup_writeInitialFstab test -z "$BUILD_INITPRE" || "$BUILD_INITPRE" "$SETUP_CONFDIR" "$UTIL_VSERVER_VARS" -$_VCLONE "$SOURCE"/ "$VDIR"/ +$_VCLONE ${SETUP_CONTEXT:+--xid "$SETUP_CONTEXT"} \ + ${EXCLUDES:+--exclude-from "$EXCLUDES"} \ + "$SOURCE"/ "$VDIR"/ test -z "$BUILD_INITPOST" || "$BUILD_INITPOST" "$SETUP_CONFDIR" "$UTIL_VSERVER_VARS" diff --git a/scripts/vserver-build.debootstrap b/scripts/vserver-build.debootstrap index 54f1564..0afe044 100644 --- a/scripts/vserver-build.debootstrap +++ b/scripts/vserver-build.debootstrap @@ -1,4 +1,4 @@ -# $Id: vserver-build.debootstrap 2574 2007-07-31 19:43:17Z dhozac $ --*- sh -*-- +# $Id: vserver-build.debootstrap 2641 2007-12-05 00:51:04Z dhozac $ --*- sh -*-- # Copyright (C) 2003 Enrico Scholz # @@ -95,8 +95,10 @@ EOF cd $dir ar x "$dst" tar xzf data.tar.gz - export DEBOOTSTRAP_DIR=`pwd`/usr/lib/debootstrap + DEBOOTSTRAP_DIR=`pwd`/usr/lib/debootstrap DEBOOTSTRAP=`pwd`/usr/sbin/debootstrap + test -d "$DEBOOTSTRAP_DIR" || DEBOOTSTRAP_DIR=`pwd`/usr/share/debootstrap + export DEBOOTSTRAP_DIR local arch arch=$(uname -i 2>/dev/null) || \ diff --git a/scripts/vserver-build.functions b/scripts/vserver-build.functions index f619545..c8ccb84 100644 --- a/scripts/vserver-build.functions +++ b/scripts/vserver-build.functions @@ -1,4 +1,4 @@ -# $Id: vserver-build.functions 2571 2007-07-29 16:55:06Z dhozac $ --*- sh -*-- +# $Id: vserver-build.functions 2704 2008-03-16 03:30:22Z dhozac $ --*- sh -*-- # Copyright (C) 2003 Enrico Scholz # @@ -54,7 +54,8 @@ function populateDev { local spec - mkdir -p -m755 "$VDIR"/dev/pts + mkdir -p -m755 "$VDIR"/dev + mkdir -m755 "$VDIR"/dev/pts while read spec; do makeDevEntry "$VDIR"/dev $spec @@ -202,6 +203,9 @@ exist already; please try to use '--force', or remove them manually." mkdir -p -m755 "$VDIR" $_SETATTR --~barrier "$VDIR" + $_SETATTR --barrier "$VDIR"/.. || colwarn $"\ +WARNING: could not set the barrier attribute on '$VDIR/..', + please set it manually." base._addGeneratedFile "$VDIR" mkdir -p -m755 "$SETUP_CONFDIR"/apps "$VDIR"/etc @@ -256,3 +260,27 @@ function base.setSuccess { __BASE_SUCCESS=1 } + +function startSleepingGuest +{ + local guest="$1" + local timeout="${2:-15}" + $_VSERVER "$guest" start --rescue --rescue-init bash -c " + exec > /dev/null + exec 2> /dev/null + trap 'kill -s 9 -- -1; exit 0' INT + i=0 + while [ \$i -lt $timeout ]; do + sleep 1 + let ++i + done + kill -s 15 -- -1 + sleep 1 + kill -s 9 -- -1" +} + +function stopSleepingGuest +{ + local guest="$1" + $_VSERVER "$guest" stop --rescue-init +} diff --git a/scripts/vserver-build.functions.yum b/scripts/vserver-build.functions.yum index 9422ba4..4f5ce37 100644 --- a/scripts/vserver-build.functions.yum +++ b/scripts/vserver-build.functions.yum @@ -1,4 +1,4 @@ -# $Id: vserver-build.functions.yum 2030 2005-04-16 21:20:45Z ensc $ --*- sh -*-- +# $Id: vserver-build.functions.yum 2612 2007-09-11 21:26:41Z ensc $ --*- sh -*-- # Copyright (C) 2003 Enrico Scholz # @@ -56,6 +56,7 @@ function yum.__substituteConf if test -e "$f"; then $_SED -e "s!@YUMETCDIR@!$prefix$PKGCFGDIR/yum/etc!g; s!@YUMCACHEDIR@!$prefix$PKGCFGDIR/yum/cache!g; + s!@YUMLIBDIR@!$prefix$PKGCFGDIR/yum/lib!g; s!@YUMLOGDIR@!$prefix$PKGCFGDIR/yum!g; s!@YUMLOCKDIR@!$prefix$PKGCFGDIR/yum!g; " "$f" >"$f.tmp" @@ -66,7 +67,7 @@ function yum.__substituteConf function yum.initFilesystem { - mkdir -p "$PKGCFGDIR"/yum/{etc,cache} + mkdir -p "$PKGCFGDIR"/yum/{etc,cache,lib} populateDirectory "$PKGCFGDIR/yum/etc" \ "$__DISTRIBDIR/defaults/yum" \ diff --git a/scripts/vserver.delete b/scripts/vserver.delete index 7d7fefd..2289d3d 100644 --- a/scripts/vserver.delete +++ b/scripts/vserver.delete @@ -1,5 +1,5 @@ #! /bin/bash -# $Id: vserver.delete 2577 2007-08-05 18:36:56Z dhozac $ +# $Id: vserver.delete 2654 2008-01-08 16:49:17Z dhozac $ # Copyright (C) 2006 Enrico Scholz # @@ -32,4 +32,4 @@ isVserverRunning "$VSERVER_DIR" && base.init pkgmgmt.initVariables $_RM -rf "`$_VSERVER_INFO "$vserver" VDIR 1`" "$VSERVER_DIR" "$PKGCFGDIR" \ - "`$_READLINK "$VSERVER_DIR/cache"`" + "`$_READLINK "$VSERVER_DIR/cache" 2>/dev/null`" diff --git a/scripts/vserver.functions b/scripts/vserver.functions index 23bb531..97b236f 100644 --- a/scripts/vserver.functions +++ b/scripts/vserver.functions @@ -1,4 +1,4 @@ -# $Id: vserver.functions 2599 2007-08-26 21:30:50Z dhozac $ --*- sh -*-- +# $Id: vserver.functions 2702 2008-03-11 10:07:26Z hollow $ --*- sh -*-- # Copyright (C) 2003 Enrico Scholz # @@ -45,6 +45,8 @@ declare -a OPTS_VSCHED=() declare -a OPTS_ENV=() declare -a OPTS_VTAG_CREATE=() declare -a OPTS_VTAG_ENTER=() +declare -a OPTS_VMEMCTRL=() +declare -a OPTS_VSPACE=() declare -a STOPCMD_PREPARE=() @@ -64,6 +66,7 @@ _IS_FAKEINIT= INITSTYLE=sysv S_CONTEXT= +N_CONTEXT= SILENT_OPT= @@ -106,9 +109,7 @@ function _generateChbindOptions f="$vdir"/interfaces/lback getFileValue lback "$f" - getFileValue nid "$vdir/ncontext" "$vdir/context" - - CHBIND_CMD=( $_CHBIND $SILENT_OPT --secure ${nid:+--nid "$nid"} + CHBIND_CMD=( $_CHBIND $SILENT_OPT --secure ${N_CONTEXT:+--nid "$N_CONTEXT"} ${bcast:+--bcast "$bcast"} ${lback:+--lback "$lback"} ) @@ -314,9 +315,18 @@ function _generateInitOptions (xgentoo) test -n "$RUNLEVEL_START" || RUNLEVEL_START="default" + RC_PATH=/usr/sbin:/usr/bin:/sbin:/bin + + if test -x "$vdir/vdir/lib/rcscripts/sh/init-vserver.sh"; then + RC_WRAP=/lib/rcscripts/sh/init-vserver.sh + elif test -x "$vdir/vdir/lib/rc/sh/init-vserver.sh"; then + RC_WRAP=/lib/rc/sh/init-vserver.sh + else + panic "init-vserver.sh not found; aborting" + fi - INITCMD_START=( env TERM=$TERM /lib/rcscripts/sh/init-vserver.sh "$RUNLEVEL_START" ) - INITCMD_STOP=( env -i TERM=$TERM RUNLEVEL=0 /sbin/rc shutdown ) + INITCMD_START=( env TERM=$TERM $RC_WRAP "$RUNLEVEL_START" ) + INITCMD_STOP=( env -i PATH=$RC_PATH TERM=$TERM RUNLEVEL=0 /sbin/rc shutdown ) INITCMD_PREPARE=( $_FAKE_RUNLEVEL 3 /var/run/utmp ) ;; @@ -509,6 +519,33 @@ create them before starting the vserver and use the 'nodev' flag then" return 0 } +function _getTunInfo +{ + local iface="$1" + + test -e "$iface/tun" -o -e "$iface/tap" || return 1 + test ! -e "$iface/tun" || echo --tun + test ! -e "$iface/tap" || echo --tap + test ! -e "$iface/nocsum" || echo --~checksum + test -e "$iface/shared" || echo --nid-failure-ok "$N_CONTEXT" + if test -e "$iface/uid"; then + local uid + getFileValue uid "$iface/uid" + echo --uid "$uid" + fi + if test -e "$iface/gid"; then + local gid + getFileValue gid "$iface/gid" + echo --gid "$gid" + fi + if test -e "$iface/linktype"; then + local linktype + getFileValue linktype "$iface/linktype" + echo --linktype "$linktype" + fi + return 0 +} + ## Usage: _processSingleInterface function _processSingleInterface { @@ -568,21 +605,27 @@ function _processSingleInterface if ! test -e "$iface"/indirect; then # XXX: IPv6 hack - use_bcast="broadcast ${bcast:-+}" + local use_bcast="broadcast ${bcast:-+}" echo "$ip" | $_GREP -q : && use_bcast= + + local tun_info + if tun_info=$(_getTunInfo "$iface"); then + _addInterfaceCmd TUNCTL "$dev" $tun_info + fi + _addInterfaceCmd IP_ADDR "$ip${prefix:+/$prefix}" $use_bcast ${name:+label "$dev:$name"} dev "$dev" #_addInterfaceCmd IP_ROUTE "$ip${prefix:+/$prefix}" dev "$dev" _addInterfaceCmd IP_LINK "$dev" $up - elif ! test -n "$ctx"; then + elif ! test -n "$N_CONTEXT"; then echo $"Using 'dummy' (indirect) for interface '$dev' requires a fixed context number; dynamic ctx are not supported" >&2 return 1 else - test -z "$mac" || _generateMac mac "$(basename $iface)" "$ctx" || return 1 + test -z "$mac" || _generateMac mac "$(basename $iface)" "$N_CONTEXT" || return 1 _addInterfaceCmd MODPROBE dummy "$dev" _addInterfaceCmd IP_LINK dev dummy0 address "$mac" _addInterfaceCmd NAMEIF "$dev" "$mac" _addInterfaceCmd IP_ADDR "$ip${prefix:+/$prefix}" dev "$dev" - test -z "$extip" || _addInterfaceCmd IPTABLES "$ip${prefix:+/$prefix}" ${name:+label "$dev:$name"} "$ctx" "$extip" + test -z "$extip" || _addInterfaceCmd IPTABLES "$ip${prefix:+/$prefix}" ${name:+label "$dev:$name"} "$N_CONTEXT" "$extip" fi break @@ -593,9 +636,11 @@ function _processSingleInterface function _generateInterfaceOptions { local iface - local ctx - test ! -e "$1"/context || read ctx <"$1"/context + # XXX: This is here instead of in _generateChbindOptions + # to avoid a circular dependency + getFileValue N_CONTEXT "$1/ncontext" "$1/context" + test -n "$N_CONTEXT" -o -z "$S_CONTEXT" || N_CONTEXT="$S_CONTEXT" for iface in "$1/interfaces/"*; do test -d "$iface" || continue @@ -606,17 +651,6 @@ function _generateInterfaceOptions _HAVE_INTERFACE_OPTIONS=1 } -function _generateTagOptions -{ - local vdir="$1" - local tag - - getFileValue tag "$vdir/tag" "$vdir/context" || return 0 - - OPTS_VTAG_CREATE=( --tag "$tag" ) - OPTS_VTAG_ENTER=( --tag "$tag" ) -} - function enableInterfaces { local i=0 @@ -645,6 +679,11 @@ function enableInterfaces IP_ADDR_FLUSH) $_IP addr flush "$@";; IP_LINK) $_IP link set "$@";; IP_ROUTE) $_IP route add "$@";; + TUNCTL) + local dev="$1" + shift + $_TUNCTL --persist "$@" "$dev" + ;; *) echo "Unknown interface-command type '$type'" >&2; false;; esac @@ -680,6 +719,7 @@ function disableInterfaces IP_ADDR_FLUSH) ;; IP_LINK) ;; ## Ignore the link-down command for now IP_ROUTE) $_IP route del "$@";; + TUNCTL) $_TUNCTL --~persist "$1";; *) echo "Unknown interface-command type '$type'" >&2; false;; esac done @@ -687,6 +727,49 @@ function disableInterfaces unlock 1 } +function _generateTagOptions +{ + local vdir="$1" + local tag + + getFileValue tag "$vdir/tag" "$vdir/context" + test -n "$tag" || return 0 + + OPTS_VTAG_CREATE=( --tag "$tag" ) + OPTS_VTAG_ENTER=( --tag "$tag" ) +} + +function _generateMemctrlOptions +{ + local vdir="$1" + local badness + + getFileValue badness "$vdir/badness" + test -n "$badness" || return 0 + + OPTS_VMEMCTRL=( --badness "$badness" ) +} + +function _generateSpaceOptions +{ + local vdir="$1" + local d="$vdir"/spaces + + test ! -e "$d"/pid || \ + OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --pid ) + + test ! -e "$d"/net || { + OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --net ) + # network context and namespace don't make much sense + _HAVE_CHBIND_OPTIONS=1 + CHBIND_CMD=() + } + + local mask + getFileValue mask "$d"/mask || \ + OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --mask "$mask" ) +} + ## Usage: prepareInit function prepareInit { @@ -731,6 +814,8 @@ function generateOptions _generateScheduleOptions "$1" _generatePersonalityOptions "$1" _generateTagOptions "$1" + _generateMemctrlOptions "$1" + _generateSpaceOptions "$1" if test -n "$_IS_FAKEINIT"; then CHCONTEXT_INIT_OPTS=( --disconnect --flag fakeinit ) @@ -892,6 +977,22 @@ function umountVserver test -n "$is_ok" } +function fsckAllFS +{ + local cfgdir=$1 + local fstab="$cfgdir"/fstab + local FSTAB_FILE + local fsck_exitcode + + test -e "$fstab" || return 0 + + export FSTAB_FILE="$fstab" + $_FSCK -s -n -A -T + fsck_exitcode=$? + test "$fsck_exitcode" -eq 0 -o \ + "$fsck_exitcode" -eq 1 || return $fsck_exitcode +} + ## Usage: waitForSync function initSync { @@ -1215,22 +1316,27 @@ function _namespaceCleanup local root=$($_VSERVER_INFO "$1" VDIR 1) local -a list local -a skip - local tmp + local i + local j getFileArray skip "$vdir"/namespace-cleanup-skip \ "$__CONFDIR"/.defaults/namespace-cleanup-skip || : # these are things that have to be accessible post-cleanup - for tmp in "$root" "$__SBINDIR" "$__PKGLIBDIR" "$vdir" \ + for i in "$root" "$__SBINDIR" "$__PKGLIBDIR" "$vdir" \ "$__PKGSTATEDIR" "$__LOCKDIR" /usr/local /tmp "${skip[@]}"; do - while test -n "$tmp"; do - list=( "${list[@]}" "$tmp" ) - tmp="${tmp%/*}" + local real=`getPhysicalDir "$i"` + test "$i" != "$real" || real= + for j in "$i" "$real"; do + while test -n "$j"; do + list=( "${list[@]}" "$j" ) + j="${j%/*}" + done done done local -a list_umount - while read dev path opts; do + while read -r dev path opts; do test -n "$path" || continue for i in "$root" /dev /proc; do test "${path#$i}" != "$path" && continue 2 @@ -1247,13 +1353,15 @@ function _namespaceCleanup done } -function loadDeviceMap +function handleDeviceMap { - local xid="$1" - local dir="$2" + local op="$1" + local xid="$2" + local dir="$3" local flags device target test -d "$dir" || return 0 + test -n "$xid" || return 0 for i in "$dir"/*; do test -d "$i" || continue @@ -1269,6 +1377,6 @@ function loadDeviceMap vdevmap_opts=( "${vdevmap_opts[@]}" ${flags:+--flags "$flags"} \ ${device:+--device "$device"} ${target:+--target "$target"} ) - $_VDEVMAP --xid "$xid" "${vdevmap_opts[@]}" || return $? + $_VDEVMAP --xid "$xid" "$op" "${vdevmap_opts[@]}" || return $? done } diff --git a/scripts/vserver.start b/scripts/vserver.start index 92c2043..a5560e5 100644 --- a/scripts/vserver.start +++ b/scripts/vserver.start @@ -1,4 +1,4 @@ -# $Id: vserver.start 2599 2007-08-26 21:30:50Z dhozac $ --*- sh -*-- +# $Id: vserver.start 2664 2008-01-20 07:56:23Z dhozac $ --*- sh -*-- # Copyright (C) 2003 Enrico Scholz # @@ -105,6 +105,8 @@ pushd "$VSERVER_DIR" >/dev/null execScriptlets "$VSERVER_DIR" "$VSERVER_NAME" initialize popd >/dev/null +fsckAllFS "$VSERVER_DIR" + mountRootFS "$VSERVER_DIR" generateOptions "$VSERVER_DIR" @@ -116,9 +118,11 @@ setDiskLimits "$VSERVER_DIR" enableInterfaces "$VSERVER_DIR" && have_interfaces=1 -mountVserver "$VSERVER_DIR" && is_mounted=1 -prepareInit "$VSERVER_DIR" -addtoCPUSET "$VSERVER_DIR" +mountVserver "$VSERVER_DIR" && is_mounted=1 +prepareInit "$VSERVER_DIR" +addtoCPUSET "$VSERVER_DIR" + +handleDeviceMap --set "$S_CONTEXT" "$VSERVER_DIR/apps/vdevmap" pushd "$VSERVER_DIR"/vdir/ >/dev/null execScriptlets "$VSERVER_DIR" "$VSERVER_NAME" pre-start @@ -133,13 +137,16 @@ if $_VSERVER_INFO - FEATURE migrate; then "${CHBIND_CMD[@]}" \ $_EXEC_ULIMIT "$VSERVER_DIR"/ulimits \ $_VTAG --create "${OPTS_VTAG_CREATE[@]}" --silent -- \ + $_VSPACE --new "${OPTS_VSPACE[@]}" -- \ $_VCONTEXT --create "${OPTS_VCONTEXT_CREATE[@]}" -- \ ${OPTION_STRACE:+$_STRACE -fF -o /tmp/vserver-start.$$} \ ${USE_VNAMESPACE:+$_VNAMESPACE --set -- } \ + $_VSPACE --set "${OPTS_VSPACE[@]}" -- \ $_VLIMIT --dir "$VSERVER_DIR"/rlimits --missingok -- \ $_VSCHED --xid self --force "${OPTS_VSCHED[@]}" -- \ $_VSYSCTL --xid self --dir "$VSERVER_DIR"/sysctl --missingok -- \ $_VUNAME --xid self --dir "$VSERVER_DIR"/uts --missingok -- \ + $_VMEMCTRL --xid self --set "${OPTS_VMEMCTRL[@]}" -- \ "${VSERVER_EXTRA_CMDS[@]}" \ $_VUNAME --xid self --set -t context="$VSERVER_DIR" -- \ $_VATTRIBUTE --set "${OPTS_VATTRIBUTE[@]}" -- \ diff --git a/scripts/vserver.stop b/scripts/vserver.stop index d78e0de..cdf4d12 100644 --- a/scripts/vserver.stop +++ b/scripts/vserver.stop @@ -1,4 +1,4 @@ -# $Id: vserver.stop 2602 2007-08-27 10:53:04Z dhozac $ --*- sh -*-- +# $Id: vserver.stop 2704 2008-03-16 03:30:22Z dhozac $ --*- sh -*-- # Copyright (C) 2003 Enrico Scholz # @@ -48,6 +48,14 @@ trap "cleanup" EXIT OPTION_FORCE_SYNC=1 +while test "$#" -gt 0; do + case "$1" in + (--rescue-init) shift; _IS_FAKEINIT=1;; + (--) shift; break;; + (-*) panic $"vserver ... stop: unknown option '$1'";; + esac +done + set -e generateOptions "$VSERVER_DIR" set +e @@ -62,6 +70,8 @@ cd "$VSERVER_DIR"/vdir/ test -z "$OPTION_DEFAULTTTY" || setDefaultTTY "$VSERVER_DIR" +$_VATTRIBUTE --set --xid "$S_CONTEXT" --flag !SC_HELPER + fail= initWait "$VSERVER_DIR" "$S_CONTEXT" vwait_statdir if test -n "$_IS_FAKEINIT" && \ @@ -72,6 +82,7 @@ if test -n "$_IS_FAKEINIT" && \ elif $_VSERVER_INFO - FEATURE migrate; then "${NICE_CMD[@]}" \ "${CHBIND_CMD[@]}" \ + "$_VSPACE" --enter "$S_CONTEXT" "${OPTS_VSPACE[@]}" -- \ "$_VTAG" --migrate "${OPTS_VTAG_ENTER[@]}" --silent -- \ $_VCONTEXT $SILENT_OPT --migrate --chroot --xid "$S_CONTEXT" -- \ "${INITCMD_STOP[@]}" || fail=1 @@ -85,10 +96,10 @@ else fi # Remove persistent so those contexts can be stopped -$_VATTRIBUTE --set --xid "$S_CONTEXT" --flag ~persistent 2>/dev/null || : -if $_VSERVER_INFO -q "$S_CONTEXT" XIDTYPE static && +$_VATTRIBUTE --set --xid "$S_CONTEXT" --flag !persistent 2>/dev/null || : +if $_VSERVER_INFO -q "$N_CONTEXT" XIDTYPE static && $_VSERVER_INFO - FEATURE vnet; then - $_NATTRIBUTE --set --nid "$S_CONTEXT" --flag ~persistent 2>/dev/null || : + $_NATTRIBUTE --set --nid "$N_CONTEXT" --flag !persistent 2>/dev/null || : fi vshelper.doStopSync @@ -103,7 +114,9 @@ sendKillSequence "$S_CONTEXT" "${INITKILL_SEQ[@]}" echo $"Vserver '$VSERVER_DIR' still running unexpectedly; please investigate it manually..." >&2 execScriptlets "$VSERVER_DIR" "$VSERVER_NAME" post-stop - + +handleDeviceMap --unset "$S_CONTEXT" "$VSERVER_DIR/apps/vdevmap" + umountVserver "$VSERVER_DIR" || : disableInterfaces "$VSERVER_DIR" diff --git a/scripts/vserver.suexec b/scripts/vserver.suexec index 3f35e90..e2afcb5 100644 --- a/scripts/vserver.suexec +++ b/scripts/vserver.suexec @@ -1,4 +1,4 @@ -# $Id: vserver.suexec 2599 2007-08-26 21:30:50Z dhozac $ --*- sh -*-- +# $Id: vserver.suexec 2669 2008-01-22 09:19:57Z dhozac $ --*- sh -*-- # Copyright (C) 2003 Enrico Scholz # @@ -38,6 +38,7 @@ if $_VSERVER_INFO - FEATURE migrate; then "${CHBIND_CMD[@]}" \ $_EXEC_ULIMIT "$VSERVER_DIR/ulimits" \ ${USE_VNAMESPACE:+$_VNAMESPACE --enter "$S_CONTEXT" -- } \ + $_VSPACE --enter "$S_CONTEXT" "${OPTS_VSPACE[@]}" -- \ $_VTAG --migrate "${OPTS_VTAG_ENTER[@]}" --silent -- \ $_VCONTEXT $SILENT_OPT --migrate --chroot \ --xid "$S_CONTEXT" --uid "$user" "${OPTS_VCONTEXT_ENTER[@]}" -- \ diff --git a/scripts/vupdateworld b/scripts/vupdateworld index 7e4cd17..6084c01 100755 --- a/scripts/vupdateworld +++ b/scripts/vupdateworld @@ -1,5 +1,5 @@ #!/bin/bash -# $Id: vupdateworld 2486 2007-02-05 18:08:17Z hollow $ +# $Id: vupdateworld 2635 2007-11-17 23:52:59Z hollow $ # Copyright (C) 2006 Benedikt Boehm # @@ -58,8 +58,8 @@ while true; do (--debug) send_through=( "${send_through[@]}" "$1" ); set -x;; (--quiet|-q) send_through=( "${send_through[@]}" "$1" );; (--all) vsomething_opts=( "${vsomething_opts[@]}" "$1" );; - (--) shift; break;; - (*) echo $"vemerge: internal error; arg=='$1'" >&2; exit 1;; + (--) test ${#vsomething_opts[@]} -eq 0 && shift; break;; + (*) echo $"vupdateworld: internal error; arg=='$1'" >&2; exit 1;; esac shift done @@ -74,10 +74,8 @@ while [ $# -gt 0 ]; do shift done -VSOMETHING_TITLE=vemerge +VSOMETHING_TITLE=vupdateworld VSOMETHING_PKGMGMT=1 export VSOMETHING_TITLE VSOMETHING_PKGMGMT - -test ${#vsomething_opts[@]} -eq 0 || vsomething_opts=( "${vsomething_opts[@]}" -- ) exec $_VSOMETHING "${send_through[@]}" emerge "${vsomething_opts[@]}" "${vserver_names[@]}" -- world --update --deep --newuse "$@" diff --git a/src/Makefile-files b/src/Makefile-files index b557433..bfe10ce 100644 --- a/src/Makefile-files +++ b/src/Makefile-files @@ -1,4 +1,4 @@ -## $Id: Makefile-files 2589 2007-08-16 03:06:50Z dhozac $ -*- makefile -*- +## $Id: Makefile-files 2697 2008-03-01 01:24:07Z dhozac $ -*- makefile -*- ## Copyright (C) 2003,2004 Enrico Scholz ## @@ -82,9 +82,12 @@ DIETPROGS += src/chcontext-compat \ src/vsysctl \ src/vclone \ src/h2ext \ - src/vtag + src/vtag \ + src/vspace \ + src/vmemctrl \ + src/tunctl -if ENSC_CAN_BEECRYPT_WITH_DIETLIBC +if ENSC_CAN_CRYPTO_WITH_DIETLIBC DIETPROGS += src/vhashify endif @@ -99,7 +102,8 @@ noinst_HEADERS += src/capability-compat.h \ src/vhashify.h \ src/vhashify-init.hc \ src/vserver-visitdir.hc \ - src/context-sync.hc + src/context-sync.hc \ + src/attribute-util.h pkglib_PROGRAMS += src/capchroot \ src/chain-echo \ @@ -121,13 +125,14 @@ pkglib_PROGRAMS += src/capchroot \ src/chbind-compat \ src/vsysctl \ src/h2ext \ + src/tunctl \ $(src_pkglib_C99_X_PROGS) \ $(src_pkglib_CXX_X_PROGS) if ENSC_HAVE_C99_COMPILER -if ENSC_HAVE_BEECRYPT +if ENSC_HAVE_CRYPTO pkglib_PROGRAMS += src/vhashify -endif ENSC_HAVE_BEECRYPT +endif ENSC_HAVE_CRYPTO endif ENSC_HAVE_C99_COMPILER legacy_PROGRAMS += src/ifspec \ @@ -163,6 +168,8 @@ sbin_PROGRAMS += src/exec-cd \ src/naddress \ src/vdevmap \ src/vtag \ + src/vspace \ + src/vmemctrl \ $(src_sbin_CXX_X_PROGS) if ENSC_HAVE_C99_COMPILER @@ -291,12 +298,13 @@ src_vunify_LDADD = $(LIBINTERNAL) $(VSERVER_LDADDS) src_vunify_LDFLAGS = $(VSERVER_LDFLGS) src_vhashify_SOURCES = src/vhashify.c -if ENSC_CAN_BEECRYPT_WITH_DIETLIBC -src_vhashify_LDADD = $(LIBINTERNAL) $(LIBENSCVECTOR) -lbeecrypt $(VSERVER_LDADDS) +src_vhashify_CFLAGS = $(AM_CFLAGS) $(ENSC_CRYPTO_CFLAGS) +if ENSC_CAN_CRYPTO_WITH_DIETLIBC +src_vhashify_LDADD = $(LIBINTERNAL) $(LIBENSCVECTOR) $(ENSC_CRYPTO_LIB) $(VSERVER_LDADDS) src_vhashify_LDFLAGS = $(VSERVER_LDFLGS) else -src_vhashify_LDADD = $(LIBINTERNAL_GLIBC) $(LIBENSCVECTOR_GLIBC) $(LIBVSERVER_GLIBC) -lbeecrypt -src_vhashify_LDFLAGS = +src_vhashify_LDADD = $(LIBINTERNAL_GLIBC) $(LIBENSCVECTOR_GLIBC) $(LIBVSERVER_GLIBC) $(ENSC_CRYPTO_LIB) +src_vhashify_LDFLAGS = -Wl,--as-needed endif src_vuname_SOURCES = src/vuname.c @@ -348,6 +356,18 @@ src_vtag_SOURCES = src/vtag.c src_vtag_LDADD = $(VSERVER_LDADDS) src_vtag_LDFLAGS = $(VSERVER_LDADDS) +src_vspace_SOURCES = src/vspace.c +src_vspace_LDADD = $(VSERVER_LDADDS) $(LIBINTERNAL) +src_vspace_LDFLAGS = $(VSERVER_LDFLGS) + +src_vmemctrl_SOURCES = src/vmemctrl.c +src_vmemctrl_LDADD = $(VSERVER_LDADDS) $(LIBINTERNAL) +src_vmemctrl_LDFLAGS = $(VSERVER_LDFLGS) + +src_tunctl_SOURCES = src/tunctl.c +src_tunctl_LDADD = $(VSERVER_LDADDS) $(LIBINTERNAL) +src_tunctl_LDFLAGS = $(VSERVER_LDFLGS) + EXTRA_PROGRAMS += $(src_sbin_CXX_PROGS) $(src_pkglib_CXX_PROGS) TESTS_ENVIRONMENT += srctestsuitedir=$(top_builddir)/src/testsuite diff --git a/src/attribute-util.h b/src/attribute-util.h new file mode 100644 index 0000000..5f11938 --- /dev/null +++ b/src/attribute-util.h @@ -0,0 +1,65 @@ +// $Id$ --*- c -*-- + +// Copyright (C) 2007-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; 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. + +#ifndef _ATTRIBUTE_UTIL_H +#define _ATTRIBUTE_UTIL_H + +static inline int +ffsull(unsigned long long word) +{ + int bit; + for (bit = 0; bit < 64; bit++) { + if (word & (1ULL << bit)) + break; + } + if (bit == 64) + bit = 0; + return bit; +} + +#define print_bitfield(fd, type, name, var) \ + do { \ + int first; \ + WRITE_MSG(fd, name ":\n"); \ + first = 1; \ + while (1) { \ + char const *i; \ + i = vc_lo ## type ## 2text(var); \ + if (!i) \ + break; \ + if (!first) \ + WRITE_MSG(fd, ","); \ + else \ + first = 0; \ + WRITE_STR(fd, i); \ + } \ + while (*(var)) { \ + int bit = ffsull(*(var)); \ + if (!bit) \ + break; \ + if (!first) \ + WRITE_MSG(fd, ","); \ + else \ + first = 0; \ + WRITE_MSG(fd, "^"); \ + WRITE_INT(fd, bit); \ + *(var) &= ~(1ULL << bit); \ + } \ + WRITE_MSG(fd, "\n"); \ + } while (0) + +#endif diff --git a/src/h2ext.c b/src/h2ext.c index 50d3094..717ce1c 100644 --- a/src/h2ext.c +++ b/src/h2ext.c @@ -1,4 +1,4 @@ -// $Id$ +// $Id: h2ext.c 2674 2008-01-27 07:55:13Z dhozac $ // Copyright (C) 2007 Daniel Hokka Zakrisson // @@ -210,17 +210,6 @@ byteswap(void *p, size_t len) } } -static inline ALWAYSINLINE void -WRITE_INT(int fd, int num) -{ - char buf[sizeof(num)*3+2]; - size_t l; - - l = utilvserver_fmt_long(buf,num); - - Vwrite(fd, buf, l); -} - static int load_description(const char *file, file_format_t **head) { diff --git a/src/lockfile.c b/src/lockfile.c index 2fe31b2..a5e4836 100644 --- a/src/lockfile.c +++ b/src/lockfile.c @@ -1,4 +1,4 @@ -// $Id: lockfile.c 1447 2004-04-13 08:27:50Z ensc $ --*- c -*-- +// $Id: lockfile.c 2696 2008-03-01 01:20:42Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // @@ -44,7 +44,7 @@ showHelp(char const *cmd) " 2. 'lockfile' will be called\n" " 3a. 'lockfile' waits until somebody opens the for reading\n" " 3b. parent (shell) opens the pipe for reading and blocks\n" - " 4. 'lockfile' calls flock() on the \n" + " 4. 'lockfile' calls lockf() on the \n" " 5. 'lockfile' closes the \n" " 6. parent (shell) unlocks since is closed\n" " 7. 'lockfile' goes into infinite loop\n" @@ -110,7 +110,7 @@ int main(int argc, char *argv[]) if ((sync_fd=open(argv[idx+1], O_WRONLY))==-1) perror("lockfile: open()"); - else if ((fd=open(argv[idx], O_CREAT|O_RDONLY|O_NOFOLLOW|O_NONBLOCK, 0644))==-1) + else if ((fd=open(argv[idx], O_CREAT|O_WRONLY|O_NOFOLLOW|O_NONBLOCK, 0644))==-1) perror("lockfile: open()"); else if (unlink(argv[idx+1])==-1) perror("lockfile: unlink()"); @@ -122,10 +122,10 @@ int main(int argc, char *argv[]) else while (time(0) // Copyright (C) 2006 Daniel Hokka Zakrisson @@ -237,94 +237,98 @@ maskToPrefix(void *data, int limit) return prefix; } -static void -readIP(char const *str, struct vc_ips **ips, uint16_t type) +static int +parseIPFormat(char const *str_c, struct vc_ips **ips, + char const *format) { - if (ifconfig_getaddr(str, &(*ips)->a.vna_v4_ip.s_addr, &(*ips)->a.vna_v4_mask.s_addr, NULL)==-1) { - char *pt; - char tmpopt[strlen(str)+1]; + size_t len = strlen(str_c); + char const *fc; + char str[len + 1], *ptr = str; + int ret = 0; + + strcpy(str, str_c); + + /* XXX: condition at the bottom */ + for (fc = format; ; fc += 2) { + char *sep; + void *dst; + unsigned long limit = 0; + + switch (*fc) { + case '1': dst = &(*ips)->a.s.ip; break; + case '2': dst = &(*ips)->a.s.ip2; break; + case 'm': dst = &(*ips)->a.s.mask; break; + default: goto out; + } - strcpy(tmpopt,str); - pt = strchr(tmpopt,'/'); - if (pt) - *pt++ = '\0'; + if (len == 0) + goto out; + if ((sep = memchr(ptr, *(fc + 1), len)) == NULL) + sep = ptr + len; + *sep = '\0'; - if (convertAddress(tmpopt, &(*ips)->a.vna_type, &(*ips)->a.vna_v4_ip.s_addr) == -1) { - WRITE_MSG(2, "Invalid IP number '"); - WRITE_STR(2, tmpopt); - WRITE_MSG(2, "'\n"); - exit(wrapper_exit_code); + /* This is ugly, and means that m cannot be first */ + switch ((*ips)->a.vna_type) { + case VC_NXA_TYPE_IPV4: limit = 32; break; + case VC_NXA_TYPE_IPV6: limit = 128; break; } - if (pt==0) { + /* This is required due to the dain-bramage that is inet_pton in dietlibc. + * Essentially any number will be parsed as a valid IPv4 address... + */ + if (*fc == 'm' && strchr(ptr, ':') == NULL && strchr(ptr, '.') == NULL) { + /* This is a prefix, not a netmask */ + unsigned long sz; + + if (!isNumberUnsigned(ptr, &sz, true) || sz > limit) { + ret = -1; + goto out; + } + + (*ips)->a.vna_prefix = sz; switch ((*ips)->a.vna_type) { case VC_NXA_TYPE_IPV4: - (*ips)->a.vna_v4_mask.s_addr = htonl(0xffffff00); - (*ips)->a.vna_prefix = 24; + (*ips)->a.vna_v4_mask.s_addr = htonl(~((1 << (32 - sz)) - 1)); break; case VC_NXA_TYPE_IPV6: - (*ips)->a.vna_prefix = 64; - (*ips)->a.vna_v6_mask.s6_addr32[0] = (*ips)->a.vna_v6_mask.s6_addr32[1] = 0xffffffff; - (*ips)->a.vna_v6_mask.s6_addr32[2] = (*ips)->a.vna_v6_mask.s6_addr32[3] = 0x00000000; + ipv6PrefixToMask(&(*ips)->a.vna_v6_mask, sz); break; - default: break; } } else { - // Ok, we have a network size, not a netmask - if (strchr(pt,'.')==0 && strchr(pt,':')==0) { - unsigned long sz, limit = 0; - - switch ((*ips)->a.vna_type) { - case VC_NXA_TYPE_IPV4: limit = 32; break; - case VC_NXA_TYPE_IPV6: limit = 128; break; - default: break; - } - - if (!isNumberUnsigned(pt, &sz, true) || sz > limit) { - WRITE_MSG(2, "Invalid prefix '"); - WRITE_STR(2, pt); - WRITE_MSG(2, "'\n"); - exit(wrapper_exit_code); - } - - (*ips)->a.vna_prefix = sz; - switch ((*ips)->a.vna_type) { - case VC_NXA_TYPE_IPV4: - (*ips)->a.vna_v4_mask.s_addr = htonl(~((1 << (32 - sz)) - 1)); - break; - case VC_NXA_TYPE_IPV6: - ipv6PrefixToMask(&(*ips)->a.vna_v6_mask, (*ips)->a.vna_prefix); - break; - default: break; - } + if (convertAddress(ptr, &(*ips)->a.vna_type, dst) == -1) { + ret = -1; + goto out; } - else { - int af, limit; - void *mask; - switch ((*ips)->a.vna_type) { - case VC_NXA_TYPE_IPV4: - af = AF_INET; - mask = &(*ips)->a.vna_v4_mask.s_addr; - limit = 32; - break; - case VC_NXA_TYPE_IPV6: - af = AF_INET6; - mask = (*ips)->a.vna_v6_mask.s6_addr32; - limit = 128; - break; - default: - return; - } - if (inet_pton(af, pt, mask) < 0) { - WRITE_MSG(2, "Invalid netmask '"); - WRITE_STR(2, pt); - WRITE_MSG(2, "'\n"); - exit(wrapper_exit_code); - } - (*ips)->a.vna_prefix = maskToPrefix(mask, limit); + else if (*fc == 'm') { + /* Got a mask, set the prefix */ + (*ips)->a.vna_prefix = maskToPrefix(&(*ips)->a.s.mask, limit); } } + + ret++; + len -= (sep - ptr); + ptr = sep + 1; + + if (*(fc + 1) == '\0') + break; + } + +out: + free(str); + return ret; +} + +static void +readIP(char const *str, struct vc_ips **ips, uint16_t type) +{ + if (ifconfig_getaddr(str, &(*ips)->a.vna_v4_ip.s_addr, &(*ips)->a.vna_v4_mask.s_addr, NULL)==-1) { + if (parseIPFormat(str, ips, "1/m") < 1) { + WRITE_MSG(2, "Invalid IP number '"); + WRITE_STR(2, str); + WRITE_MSG(2, "'\n"); + exit(wrapper_exit_code); + } } else (*ips)->a.vna_type = VC_NXA_TYPE_IPV4; @@ -352,6 +356,20 @@ readBcast(char const *str, struct vc_ips **ips) *ips = (*ips)->next; } +static void +readRange(char const *str, struct vc_ips **ips) +{ + if (parseIPFormat(str, ips, "1-2/m") < 2) { + WRITE_MSG(2, "Invalid range '"); + WRITE_STR(2, str); + WRITE_MSG(2, "'\n"); + exit(wrapper_exit_code); + } + (*ips)->a.vna_type |= VC_NXA_TYPE_RANGE; + (*ips)->next = calloc(1, sizeof(struct vc_ips)); + *ips = (*ips)->next; +} + static void tellAddress(struct vc_net_addr *addr, bool silent) { @@ -452,7 +470,7 @@ int main (int argc, char *argv[]) case CMD_SET : args.do_set = true; break; case CMD_IP : readIP(optarg, &ips, VC_NXA_TYPE_ADDR); break; case CMD_MASK : readIP(optarg, &ips, VC_NXA_TYPE_MASK); break; - case CMD_RANGE : readIP(optarg, &ips, VC_NXA_TYPE_RANGE); break; + case CMD_RANGE : readRange(optarg, &ips); break; case CMD_BCAST : readBcast(optarg, &ips); break; case CMD_LBACK : readIP(optarg, &ips, VC_NXA_TYPE_ADDR | VC_NXA_MOD_LBACK); break; default : diff --git a/src/nattribute.c b/src/nattribute.c index b211bd2..b8bda61 100644 --- a/src/nattribute.c +++ b/src/nattribute.c @@ -1,4 +1,4 @@ -// $Id: nattribute.c 2585 2007-08-12 00:13:31Z dhozac $ --*- c -*-- +// $Id: nattribute.c 2694 2008-03-01 01:07:49Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // Copyright (C) 2006 Daniel Hokka Zakrisson @@ -22,6 +22,7 @@ #endif #include "util.h" +#include "attribute-util.h" #include #include @@ -40,6 +41,7 @@ #define CMD_CAP 0x2002 #define CMD_FLAG 0x2003 #define CMD_SECURE 0x2004 +#define CMD_GET 0x2005 int wrapper_exit_code = 1; @@ -52,13 +54,15 @@ CMDLINE_OPTIONS[] = { { "ncap", required_argument, 0, CMD_CAP }, { "flag", required_argument, 0, CMD_FLAG }, { "secure", no_argument, 0, CMD_SECURE }, + { "get", no_argument, 0, CMD_GET }, {0,0,0,0} }; struct Arguments { + int mode; nid_t nid; - struct vc_net_flags flags; - struct vc_net_caps caps; + struct vc_net_flags flags; + struct vc_net_caps caps; }; static void @@ -67,7 +71,8 @@ showHelp(int fd, char const *cmd, int res) WRITE_MSG(fd, "Usage:\n "); WRITE_STR(fd, cmd); WRITE_MSG(fd, - " --set [--nid ] [--ncap [~!]] [--flag [~!]] [--secure] -- [ *]\n" + " {--set|--get} [--nid ] [--ncap [~!]] [--flag [~!]] [--secure] --\n" + " [ *]\n" "\n" " --ncap ... network capability to be added\n" " --flag ... network flag to be added\n" @@ -81,7 +86,7 @@ static void showVersion() { WRITE_MSG(1, - "nattribute " VERSION " -- sets attributes of network contexts\n" + "nattribute " VERSION " -- sets/gets attributes of network contexts\n" "This program is part of " PACKAGE_STRING "\n\n" "Copyright (C) 2004 Enrico Scholz\n" "Copyright (C) 2006 Daniel Hokka Zakrisson\n" @@ -133,9 +138,25 @@ parseSecure(struct vc_net_flags * flags, flags->mask = VC_NXF_HIDE_NETIF; } +static int +printAttrs(struct Arguments *args) +{ + struct vc_net_flags flags; + struct vc_net_caps caps; + + Evc_get_nflags(args->nid, &flags); + Evc_get_ncaps(args->nid, &caps); + + print_bitfield(1, ncap, "ncapabilities", &caps.ncaps); + print_bitfield(1, nflag, "nflags", &flags.flagword); + + return 0; +} + int main(int argc, char *argv[]) { struct Arguments args = { + .mode = CMD_SET, .nid = VC_NOCTX, .flags = { .flagword = 0, .mask = 0 }, .caps = { .ncaps = 0, .cmask = 0 }, @@ -148,7 +169,8 @@ int main(int argc, char *argv[]) switch (c) { case CMD_HELP : showHelp(1, argv[0], 0); case CMD_VERSION : showVersion(); - case CMD_SET : break; // default op currently + case CMD_SET : args.mode = CMD_SET; break; + case CMD_GET : args.mode = CMD_GET; break; case CMD_NID : args.nid = Evc_nidopt2nid(optarg,true); break; case CMD_FLAG : parseFlags(optarg, &args.flags); break; case CMD_CAP : parseNCaps(optarg, &args.caps); break; @@ -164,16 +186,25 @@ int main(int argc, char *argv[]) if (args.nid==VC_NOCTX) args.nid = Evc_get_task_nid(0); - if (args.caps.cmask && - vc_set_ncaps(args.nid, &args.caps)==-1) - perror(ENSC_WRAPPERS_PREFIX "vc_set_ncaps()"); - else if (args.flags.mask && - vc_set_nflags(args.nid, &args.flags)==-1) - perror(ENSC_WRAPPERS_PREFIX "vc_set_nflags()"); - else if (optind // @@ -96,6 +96,8 @@ static unsigned int debug_level = 0; static bool is_initialized = false; +static bool ctx_created = false; + //DECLARE(rpm_execcon); //DECLARE(execv); DECLARE(getpwnam); @@ -255,6 +257,7 @@ setupContext(xid_t xid, char const **xid_str) char buf[sizeof(xid_t)*3 + 128]; size_t l; struct vc_ctx_caps caps; + struct vc_ctx_flags flags; strcpy(buf, "rpm-fake.so #"); l = utilvserver_fmt_uint(buf+sizeof("rpm-fake.so #")-1, getppid()); @@ -265,11 +268,16 @@ setupContext(xid_t xid, char const **xid_str) caps.bcaps = ~vc_get_insecurebcaps(); caps.bmask = ~0ull; Evc_set_ccaps(rc, &caps); + + flags.flagword = 0; + flags.mask = VC_VXF_SC_HELPER; + Evc_set_cflags(rc, &flags); // context will be activated later... xid = rc; res = true; + ctx_created = true; } } @@ -510,6 +518,15 @@ exitRPMFake() uint8_t c; if (read(sync_sock, &c, 1)!=1) { /*...*/ } if (write(pw_sock, "Q", 1)!=1) { /*...*/ } + if (ctx_created) { + if (vc_isSupported(vcFEATURE_VWAIT)) { + if (vc_wait_exit(ctx)==-1) { /*...*/ } + } + else { + /* this can race */ + if (read(sync_sock, &c, 1)!=0) { /*...*/} + } + } } } diff --git a/src/secure-mount.c b/src/secure-mount.c index 5fba02d..1bc29c3 100644 --- a/src/secure-mount.c +++ b/src/secure-mount.c @@ -1,4 +1,4 @@ -// $Id: secure-mount.c 2480 2007-01-28 11:35:19Z dhozac $ --*- c++ -*-- +// $Id: secure-mount.c 2678 2008-02-16 22:09:30Z dhozac $ --*- c++ -*-- // Copyright (C) 2003 Enrico Scholz // @@ -279,8 +279,8 @@ updateMtab(struct MountInfo const *mnt, struct Options const *opt) goto err0; } - if (flock(fd, LOCK_EX)==-1) { - perror("secure-mount: flock()"); + if (lockf(fd, F_LOCK, 0)==-1) { + perror("secure-mount: lockf()"); goto err1; } diff --git a/src/testsuite/Makefile-files b/src/testsuite/Makefile-files index 2000d0b..5eeddd7 100644 --- a/src/testsuite/Makefile-files +++ b/src/testsuite/Makefile-files @@ -1,4 +1,4 @@ -## $Id: Makefile-files 2245 2006-01-04 17:28:42Z ensc $ --*- makefile -*-- +## $Id: Makefile-files 2685 2008-02-21 23:22:23Z ensc $ --*- makefile -*-- ## Copyright (C) 2003 Enrico Scholz ## @@ -22,7 +22,7 @@ src_testsuite_check_active_PRGS = src/testsuite/vunify-functest \ src_testsuite_check_passive_PRGS = src/testsuite/rpm-fake-test if ENSC_HAVE_C99_COMPILER -if ENSC_HAVE_BEECRYPT +if ENSC_HAVE_CRYPTO src_testsuite_check_passive_PRGS += src/testsuite/hashcalc \ src/testsuite/hashcalc-plain endif @@ -33,7 +33,7 @@ check_PROGRAMS += $(src_testsuite_check_passive_PRGS) \ if ENSC_HAVE_C99_COMPILER src_testsuite_check_src_C99_SCRPTS = src/testsuite/vunify-test.sh -if ENSC_HAVE_BEECRYPT +if ENSC_HAVE_CRYPTO src_testsuite_check_src_C99_SCRPTS += src/testsuite/hashcalc-plain.sh \ src/testsuite/hashcalc.sh endif @@ -73,18 +73,21 @@ src_testsuite_chbind_test_LDADD = lib/libvserver.la src_testsuite_hashcalc_SOURCES = src/testsuite/hashcalc.c src_testsuite_hashcalc_plain_SOURCES = src/testsuite/hashcalc-plain.c -if ENSC_CAN_BEECRYPT_WITH_DIETLIBC -src_testsuite_hashcalc_LDADD = $(LIBINTERNAL) $(LIBENSCVECTOR) -lbeecrypt $(VSERVER_LDADDS) +src_testsuite_hashcalc_CFLAGS = $(AM_CFLAGS) $(ENSC_CRYPTO_CFLAGS) +src_testsuite_hashcalc_plain_CFLAGS = $(AM_CFLAGS) $(ENSC_CRYPTO_CFLAGS) + +if ENSC_CAN_CRYPTO_WITH_DIETLIBC +src_testsuite_hashcalc_LDADD = $(LIBINTERNAL) $(LIBENSCVECTOR) $(ENSC_CRYPTO_LIB) $(VSERVER_LDADDS) src_testsuite_hashcalc_LDFLAGS = $(VSERVER_LDFLGS) -src_testsuite_hashcalc_plain_LDADD = $(LIBINTERNAL) $(LIBENSCVECTOR) -lbeecrypt $(VSERVER_LDADDS) +src_testsuite_hashcalc_plain_LDADD = $(LIBINTERNAL) $(LIBENSCVECTOR) $(ENSC_CRYPTO_LIB) $(VSERVER_LDADDS) src_testsuite_hashcalc_plain_LDFLAGS = $(VSERVER_LDFLGS) else -src_testsuite_hashcalc_LDADD = $(LIBINTERNAL_GLIBC) $(LIBENSCVECTOR_GLIBC) $(LIBVSERVER_GLIBC) -lbeecrypt -src_testsuite_hashcalc_LDFLAGS = +src_testsuite_hashcalc_LDADD = $(LIBINTERNAL_GLIBC) $(LIBENSCVECTOR_GLIBC) $(LIBVSERVER_GLIBC) $(ENSC_CRYPTO_LIB) +src_testsuite_hashcalc_LDFLAGS = -Wl,--as-needed -src_testsuite_hashcalc_plain_LDADD = $(LIBINTERNAL_GLIBC) $(LIBENSCVECTOR_GLIBC) $(LIBVSERVER_GLIBC) -lbeecrypt -src_testsuite_hashcalc_plain_LDFLAGS = +src_testsuite_hashcalc_plain_LDADD = $(LIBINTERNAL_GLIBC) $(LIBENSCVECTOR_GLIBC) $(LIBVSERVER_GLIBC) $(ENSC_CRYPTO_LIB) +src_testsuite_hashcalc_plain_LDFLAGS = -Wl,--as-needed endif src_testsuite_CPPFLAGS = -I $(top_srcdir)/src -D ENSC_TESTSUITE diff --git a/src/testsuite/hashcalc-plain.c b/src/testsuite/hashcalc-plain.c index 5b6ff47..bc0f075 100644 --- a/src/testsuite/hashcalc-plain.c +++ b/src/testsuite/hashcalc-plain.c @@ -1,4 +1,4 @@ -// $Id: hashcalc-plain.c 2245 2006-01-04 17:28:42Z ensc $ --*- c -*-- +// $Id: hashcalc-plain.c 2685 2008-02-21 23:22:23Z ensc $ --*- c -*-- // Copyright (C) 2006 Enrico Scholz // @@ -20,7 +20,7 @@ # include #endif -#include +#include #include #include #include @@ -32,15 +32,15 @@ #define HASH_BLOCKSIZE 0x10000000u static bool -convertDigest(char res[], hashFunctionContext * h_ctx) +convertDigest(char res[], ensc_hash_context * h_ctx) { static char const HEX_DIGIT[] = "0123456789abcdef"; - size_t d_size = h_ctx->algo->digestsize; + size_t d_size = ensc_crypto_hashctx_get_digestsize(h_ctx); unsigned char digest[d_size]; size_t out = 0; - if (hashFunctionContextDigest(h_ctx, digest)==-1) + if (ensc_crypto_hashctx_get_digest(h_ctx, digest, NULL, d_size)==-1) return false; for (size_t in=0; in // @@ -39,17 +39,18 @@ int main(int UNUSED argc, char *argv[]) volatile unsigned int canary2; volatile unsigned int canary3; } __attribute__((__packed__)) d_path; - + d_path.canary0 = 0x12345678; d_path.canary1 = 0x21436587; d_path.canary2 = 0x89abcdef; d_path.canary3 = 0x98badcfe; memset(d_path.d, 0x66, sizeof d_path.d); - global_info.hash_conf.method = hashFunctionFind(argv[2]); + ensc_crypto_init(); + global_info.hash_conf.method = ensc_crypto_hash_find(argv[2]); - assert(hashFunctionContextInit(&global_info.hash_context, - global_info.hash_conf.method)!=-1); + assert(ensc_crypto_hashctx_init(&global_info.hash_context, + global_info.hash_conf.method)!=-1); assert(fstat(fd, &st)!=-1); @@ -68,7 +69,7 @@ int main(int UNUSED argc, char *argv[]) Vwrite(1, d_path.d, strlen(d_path.d)); Vwrite(1, "\n", 1); - hashFunctionContextFree(&global_info.hash_context); + ensc_crypto_hashctx_free(&global_info.hash_context); return 0; } diff --git a/src/testsuite/hashcalc.sh b/src/testsuite/hashcalc.sh index 600109a..492bfe2 100755 --- a/src/testsuite/hashcalc.sh +++ b/src/testsuite/hashcalc.sh @@ -51,21 +51,16 @@ test x"$ensc_use_expensive_tests" != xyes || { } &>/dev/null for i in $tmpdir/rand-*; do - sha1_0=$($hashcalc "$i" SHA-1 | tr -d / ) - sha1_1=$(sha1sum "$i" | awk '{ print $1}' ) + for m in md5 sha1 sha256 sha512; do + sum_0=$($hashcalc "$i" "$m" | tr -d / ) + sum_1=$(${m}sum "$i" | awk '{ print $1}' ) - test x"$sha1_0" = x"$sha1_1" || { - echo "SHA-1 mismatch at $(basename $i)" - exit 1 - } - - md5_0=$($hashcalc "$i" MD5 | tr -d / ) - md5_1=$(md5sum "$i" | awk '{ print $1}' ) - - test x"$md5_0" = x"$md5_1" || { - echo "MD5 mismatch at $(basename $i)" - exit 1 - } + # compare only the first 80 chars as vhashify will cut digest to MAXPATHLEN + test x"${sum_0::80}" = x"${sum_1::80}" || { + echo "$m mismatch at $(basename $i): '$sum_0' vs. '$sum_1'" + exit 1 + } + done done true diff --git a/src/tunctl.c b/src/tunctl.c new file mode 100644 index 0000000..14b904a --- /dev/null +++ b/src/tunctl.c @@ -0,0 +1,233 @@ +// $Id$ --*- c -*-- + +// 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; 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. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "util.h" + +#include + +#include +#include +#include +#include +#include +#include +#include + +/* Make sure we have the necessary ioctls */ +#ifndef TUNSETGROUP +# define TUNSETGROUP _IOW('T', 206, int) +#endif +#ifndef TUNSETNID +# define TUNSETNID _IOW('T', 215, int) +#endif + +#define ENSC_WRAPPERS_PREFIX "tunctl: " +#define ENSC_WRAPPERS_UNISTD 1 +#define ENSC_WRAPPERS_VSERVER 1 +#define ENSC_WRAPPERS_FCNTL 1 +#define ENSC_WRAPPERS_IOCTL 1 +#include + + +#define CMD_HELP 0x1000 +#define CMD_VERSION 0x1001 +#define CMD_NID 0x0001 +#define CMD_DEVICE 0x0002 +#define CMD_PERSIST 0x0004 +#define CMD_NOPERSIST 0x0008 +#define CMD_CSUM 0x0010 +#define CMD_NOCSUM 0x0020 +#define CMD_UID 0x0040 +#define CMD_GID 0x0080 +#define CMD_LINKTYPE 0x0100 +#define CMD_TUN 0x0200 +#define CMD_TAP 0x0400 +#define CMD_NID_FAILURE_OK (0x0800 | CMD_NID) + +int wrapper_exit_code = 255; + +struct option const +CMDLINE_OPTIONS[] = { + { "help", no_argument, 0, CMD_HELP }, + { "version", no_argument, 0, CMD_VERSION }, + { "nid", required_argument, 0, CMD_NID }, + { "device", required_argument, 0, CMD_DEVICE }, + { "persist", no_argument, 0, CMD_PERSIST }, + { "~persist", no_argument, 0, CMD_NOPERSIST }, + { "checksum", no_argument, 0, CMD_CSUM }, + { "~checksum", no_argument, 0, CMD_NOCSUM }, + { "uid", required_argument, 0, CMD_UID }, + { "gid", required_argument, 0, CMD_GID }, + { "linktype", required_argument, 0, CMD_LINKTYPE }, + { "tun", no_argument, 0, CMD_TUN }, + { "tap", no_argument, 0, CMD_TAP }, + { "nid-failure-ok", required_argument, 0, CMD_NID_FAILURE_OK }, + {0,0,0,0} +}; + +struct Arguments { + unsigned int set; + nid_t nid; + char *device; + unsigned persist : 1; + unsigned checksum : 1; + uid_t uid; + gid_t gid; + int linktype; + int type; +}; + +static void +showHelp(int fd, char const *cmd, int res) +{ + WRITE_MSG(fd, "Usage: "); + WRITE_STR(fd, cmd); + WRITE_MSG(fd, + " {--tun|--tap}\n" + " [--persist|--~persist] [--checksum|--~checksum]\n" + " [--nid ] [--uid ] [--gid ] [--linktype ]\n" + " ...\n" + "\n" + "Please report bugs to " PACKAGE_BUGREPORT "\n"); + + exit(res); +} + +static void +showVersion() +{ + WRITE_MSG(1, + "tunctl " VERSION " -- controls TUN/TAP devices\n" + "This program is part of " PACKAGE_STRING "\n\n" + "Copyright (C) 2008 Daniel Hokka Zakrisson\n" + VERSION_COPYRIGHT_DISCLAIMER); + exit(0); +} + +static void +doTunctl(struct Arguments *args, char *interface) +{ + int fd; + struct ifreq ifr; + + fd = EopenD(args->device, O_RDWR, 0); + + strncpy(ifr.ifr_name, interface, IFNAMSIZ); + ifr.ifr_name[IFNAMSIZ-1] = '\0'; + ifr.ifr_flags = args->type; + EioctlD(fd, TUNSETIFF, &ifr); + + if (args->set & (CMD_CSUM|CMD_NOCSUM)) + EioctlD(fd, TUNSETNOCSUM, (void *) (long) !args->checksum); + if (args->set & CMD_UID) + EioctlD(fd, TUNSETOWNER, (void *) (long) args->uid); + if (args->set & CMD_GID) + EioctlD(fd, TUNSETGROUP, (void *) (long) args->gid); + if (args->set & CMD_NID) { + if (args->set & CMD_NID_FAILURE_OK) + ioctl(fd, TUNSETNID, (void *) (long) args->nid); + else + EioctlD(fd, TUNSETNID, (void *) (long) args->nid); + } + if (args->set & CMD_LINKTYPE) + EioctlD(fd, TUNSETLINK, (void *) (long) args->linktype); + if (args->set & (CMD_PERSIST|CMD_NOPERSIST)) + EioctlD(fd, TUNSETPERSIST, (void *) (long) args->persist); + + close(fd); +} + +int main(int argc, char *argv[]) +{ + struct Arguments args = { + .set = 0, + .nid = VC_NOCTX, + .device = "/dev/net/tun", + .persist = 0, + .checksum = 0, + .uid = -1, + .gid = -1, + .linktype = -1, + .type = IFF_TUN, + }; + char **interface; + + while (1) { + int c = getopt_long(argc, argv, "+", CMDLINE_OPTIONS, 0); + signed long tmp = 0; + if (c==-1) break; + + switch (c) { + case CMD_HELP : showHelp(1, argv[0], 0); + case CMD_VERSION : showVersion(); + + case CMD_NID_FAILURE_OK: + case CMD_NID : args.nid = Evc_nidopt2nid(optarg, true); break; + case CMD_DEVICE : args.device = optarg; break; + case CMD_PERSIST : args.persist = 1; break; + case CMD_NOPERSIST: args.persist = 0; break; + case CMD_CSUM : args.checksum = 1; break; + case CMD_NOCSUM : args.checksum = 0; break; + case CMD_TUN : args.type = IFF_TUN; break; + case CMD_TAP : args.type = IFF_TAP; break; + case CMD_UID : + if (!isNumber(optarg, &tmp, true)) { + WRITE_MSG(2, "Uid '"); + WRITE_STR(2, optarg); + WRITE_MSG(2, "' is not an integer.\n"); + } + args.uid = (uid_t) tmp; + break; + case CMD_GID : + if (!isNumber(optarg, &tmp, true)) { + WRITE_MSG(2, "Gid '"); + WRITE_STR(2, optarg); + WRITE_MSG(2, "' is not an integer.\n"); + } + args.gid = (gid_t) tmp; + break; + case CMD_LINKTYPE : + if (!isNumber(optarg, &tmp, true)) { + WRITE_MSG(2, "Link-type '"); + WRITE_STR(2, optarg); + WRITE_STR(2, "' is not an integer.\n"); + } + args.linktype = (int) tmp; + break; + + default : + WRITE_MSG(2, "Try '"); + WRITE_STR(2, argv[0]); + WRITE_MSG(2, " --help' for more information.\n"); + return 255; + break; + } + + args.set |= c; + } + + for (interface = argv + optind; *interface; interface++) { + doTunctl(&args, *interface); + } + + return EXIT_SUCCESS; +} diff --git a/src/vattribute.c b/src/vattribute.c index 1339e15..9cd8708 100644 --- a/src/vattribute.c +++ b/src/vattribute.c @@ -1,4 +1,4 @@ -// $Id: vattribute.c 2403 2006-11-24 23:06:08Z dhozac $ --*- c -*-- +// $Id: vattribute.c 2695 2008-03-01 01:15:31Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // @@ -21,6 +21,7 @@ #endif #include "util.h" +#include "attribute-util.h" #include #include @@ -40,6 +41,7 @@ #define CMD_FLAG 0x2003 #define CMD_SECURE 0x2004 #define CMD_BCAP 0x2005 +#define CMD_GET 0x2006 int wrapper_exit_code = 1; @@ -49,6 +51,7 @@ CMDLINE_OPTIONS[] = { { "version", no_argument, 0, CMD_VERSION }, { "xid", required_argument, 0, CMD_XID }, { "set", no_argument, 0, CMD_SET }, + { "get", no_argument, 0, CMD_GET }, { "ccap", required_argument, 0, CMD_CCAP }, { "bcap", required_argument, 0, CMD_BCAP }, { "flag", required_argument, 0, CMD_FLAG }, @@ -60,6 +63,7 @@ struct Arguments { xid_t xid; struct vc_ctx_flags flags; struct vc_ctx_caps caps; + int mode; }; static void @@ -68,10 +72,12 @@ showHelp(int fd, char const *cmd, int res) WRITE_MSG(fd, "Usage:\n "); WRITE_STR(fd, cmd); WRITE_MSG(fd, - " --set [--xid ] [--bcap [~!]] [--ccap [~!]] [--flag [~!]] [--secure] -- [ *]\n" + " [--xid ] {--get|--set [--bcap [~!]] [--ccap [~!]]\n" + " [--flag [~!]] [--secure]} -- [ *]\n" "\n" - " --bcap ... system capability to be added\n" - " --cap ... context capability to be added\n" + " --bcap ... system capability to be set\n" + " --ccap ... context capability to be set\n" + " --flag ... context flag to be set\n" "\n" "Please report bugs to " PACKAGE_BUGREPORT "\n"); @@ -82,7 +88,7 @@ static void showVersion() { WRITE_MSG(1, - "vattribute " VERSION " -- sets attributes of vservers\n" + "vattribute " VERSION " -- sets/gets attributes of vservers\n" "This program is part of " PACKAGE_STRING "\n\n" "Copyright (C) 2004 Enrico Scholz\n" VERSION_COPYRIGHT_DISCLAIMER); @@ -151,14 +157,31 @@ parseSecure(struct vc_ctx_flags UNUSED * flags, flags->mask = VC_VXF_HIDE_NETIF; } +static int +printAttrs(struct Arguments *args) +{ + struct vc_ctx_flags flags; + struct vc_ctx_caps caps; + + Evc_get_cflags(args->xid, &flags); + Evc_get_ccaps(args->xid, &caps); + + print_bitfield(1, bcap, "bcapabilities", &caps.bcaps); + print_bitfield(1, ccap, "ccapabilities", &caps.ccaps); + print_bitfield(1, cflag, "flags", &flags.flagword); + + return 0; +} + int main(int argc, char *argv[]) { struct Arguments args = { .xid = VC_NOCTX, .flags = { .flagword = 0, .mask = 0 }, .caps = { .bcaps = 0, .bmask = 0,.ccaps = 0, .cmask = 0 }, + .mode = CMD_SET, }; - + while (1) { int c = getopt_long(argc, argv, "+", CMDLINE_OPTIONS, 0); if (c==-1) break; @@ -166,7 +189,8 @@ int main(int argc, char *argv[]) switch (c) { case CMD_HELP : showHelp(1, argv[0], 0); case CMD_VERSION : showVersion(); - case CMD_SET : break; // default op currently + case CMD_SET : args.mode = CMD_SET; break; + case CMD_GET : args.mode = CMD_GET; break; case CMD_XID : args.xid = Evc_xidopt2xid(optarg,true); break; case CMD_FLAG : parseFlags(optarg, &args.flags); break; case CMD_CCAP : parseCCaps(optarg, &args.caps); break; @@ -183,16 +207,25 @@ int main(int argc, char *argv[]) if (args.xid==VC_NOCTX) args.xid = Evc_get_task_xid(0); - if ((args.caps.cmask || args.caps.bmask) && - vc_set_ccaps(args.xid, &args.caps)==-1) - perror(ENSC_WRAPPERS_PREFIX "vc_set_ccaps()"); - else if (args.flags.mask && - vc_set_cflags(args.xid, &args.flags)==-1) - perror(ENSC_WRAPPERS_PREFIX "vc_set_flags()"); - else if (optindd, st, dst_path.d)) PERROR_Q(ENSC_WRAPPERS_PREFIX "Unify_copy", dst_path.d); else if (global_args->xid != VC_NOCTX && - vc_set_iattr(dst_path.d, global_args->xid, 0, VC_IATTR_XID) == -1) + vc_set_iattr(dst_path.d, global_args->xid, 0, VC_IATTR_XID) == -1 && + errno != EINVAL) PERROR_Q(ENSC_WRAPPERS_PREFIX "vc_set_iattr", dst_path.d); else res = true; diff --git a/src/vdevmap.c b/src/vdevmap.c index 5b70b51..a56c00e 100644 --- a/src/vdevmap.c +++ b/src/vdevmap.c @@ -1,4 +1,4 @@ -// $Id: vdevmap.c 2490 2007-02-05 20:45:25Z dhozac $ --*- c -*-- +// $Id: vdevmap.c 2703 2008-03-15 16:05:49Z dhozac $ --*- c -*-- // Copyright (C) 2006 Daniel Hokka Zakrisson // @@ -43,6 +43,8 @@ CMDLINE_OPTIONS[] = { { "help", no_argument, 0, CMD_HELP }, { "version", no_argument, 0, CMD_VERSION }, { "xid", required_argument, 0, 'x' }, + { "set", no_argument, 0, 's' }, + { "unset", no_argument, 0, 'u' }, { "open", no_argument, 0, 'o' }, { "create", no_argument, 0, 'c' }, { "remap", no_argument, 0, 'r' }, @@ -58,7 +60,24 @@ showHelp(int fd, char const *cmd) WRITE_MSG(fd, "Usage: "); WRITE_STR(fd, cmd); WRITE_MSG(fd, - " --xid [--flags ] [--open] [--create] [--remap] [--device ] [--target ]\n" + " --xid {--set|--unset} [--flags ] [--open] [--create]\n" + " [--device ] [--remap --target ]\n" + "\n" + " --flags Set the specified flags\n" + " --open Allow opening of the device\n" + " --create If CAP_MKNOD is given, allow mknod(2)\n" + " --device Device to apply the command to\n" + " --remap Remap the device to the target\n" + " --target Target for --remap\n" + "\n" + "EXAMPLES\n" + " Remap /dev/hda1 to /dev/vroot1 for xid 42\n" + " vdevmap --xid 42 --set --open --device /dev/hda1 --target /dev/vroot1 --remap\n" + " Let xid 42 create all device nodes\n" + " vdevmap --xid 42 --set --open --create --target /dev/null\n" + " vdevmap --xid 42 --set --open --create --target /dev/root\n" + " Let xid 43 create just /dev/null\n" + " vdevmap --xid 43 --set --open --create --device /dev/null\n" "\n" "Please report bugs to " PACKAGE_BUGREPORT "\n"); @@ -85,10 +104,11 @@ int main(int argc, char *argv[]) uint32_t flags = 0; char *device = NULL; char *target = NULL; + bool set = true; unsigned long tmp = 0; while (1) { - int c = getopt_long(argc, argv, "+x:ocrf:d:t:", CMDLINE_OPTIONS, 0); + int c = getopt_long(argc, argv, "+x:suocrf:d:t:", CMDLINE_OPTIONS, 0); if (c==-1) break; switch (c) { @@ -100,6 +120,8 @@ int main(int argc, char *argv[]) case 'r' : do_remap = true; break; case 'd' : device = optarg; break; case 't' : target = optarg; break; + case 's' : set = 1; break; + case 'u' : set = 0; break; case 'f' : if (!isNumberUnsigned(optarg, &tmp, false)) { WRITE_MSG(2, "Invalid flags argument: '"); @@ -123,12 +145,18 @@ int main(int argc, char *argv[]) if (allow_create) flags |= VC_DATTR_CREATE; if (do_remap) flags |= VC_DATTR_REMAP; - if (xid==VC_NOCTX) + if (!target && do_remap) + WRITE_MSG(2, "Remapping specified without a target; try '--help' for more information\n"); + else if (xid==VC_NOCTX) WRITE_MSG(2, "No xid specified; try '--help' for more information\n"); else if (optind!=argc) WRITE_MSG(2, "Unused argument(s); try '--help' for more information\n"); - else if (vc_set_mapping(xid, device, target, flags)==-1) + else if (!device && !target) + WRITE_MSG(2, "Device and target are missing; try '--help' for more information\n"); + else if (set && vc_set_mapping(xid, device, target, flags)==-1) perror("vc_set_mapping()"); + else if (!set && vc_unset_mapping(xid, device, target, flags)==-1) + perror("vc_unset_mapping()"); else return EXIT_SUCCESS; diff --git a/src/vhashify-init.hc b/src/vhashify-init.hc index 2e43779..1a81f7c 100644 --- a/src/vhashify-init.hc +++ b/src/vhashify-init.hc @@ -1,4 +1,4 @@ -// $Id: vhashify-init.hc 1967 2005-03-23 02:10:23Z ensc $ --*- c -*-- +// $Id: vhashify-init.hc 2685 2008-02-21 23:22:23Z ensc $ --*- c -*-- // Copyright (C) 2005 Enrico Scholz // @@ -96,15 +96,18 @@ initHashMethod(struct HashDirConfiguration *conf, char const *filename) { int fd = open(filename, O_RDONLY); if (fd==-1 && conf->method==0) - conf->method = hashFunctionDefault(); + conf->method = ensc_crypto_hash_get_default(); if (fd==-1) { + char const *hash_name; assert(conf->method!=0); if (conf->method==0) return false; if (global_args->dry_run) return true; // do not create the file - + fd = Eopen(filename, O_WRONLY|O_CREAT|O_EXCL|O_NOFOLLOW, 0644); - TEMP_FAILURE_RETRY(write(fd, conf->method->name, strlen(conf->method->name))); + + hash_name = ensc_crypto_hash_get_name(conf->method); + TEMP_FAILURE_RETRY(write(fd, hash_name, strlen(hash_name))); TEMP_FAILURE_RETRY(write(fd, "\n", 1)); } else { @@ -119,7 +122,7 @@ initHashMethod(struct HashDirConfiguration *conf, char const *filename) --s; buf[s] = '\0'; - conf->method = hashFunctionFind(buf); + conf->method = ensc_crypto_hash_find(buf); if (conf->method==0) { WRITE_MSG(2, "Can not find hash-function '"); WRITE_STR(2, buf); @@ -130,7 +133,7 @@ initHashMethod(struct HashDirConfiguration *conf, char const *filename) WRITE_MSG(2, "Can not read configuration file for hash-method\n"); } - if (conf->method!=0 && conf->method->digestsize*8>HASH_MAXBITS) { + if (conf->method!=0 && ensc_crypto_hash_get_digestsize(conf->method)*8>HASH_MAXBITS) { WRITE_MSG(2, "Wow... what an huge hash-function. I can not handle so much bits; giving up...\n"); conf->method=0; } diff --git a/src/vhashify.c b/src/vhashify.c index 005efd8..fb1172c 100644 --- a/src/vhashify.c +++ b/src/vhashify.c @@ -1,4 +1,4 @@ -// $Id: vhashify.c 2569 2007-07-22 17:24:29Z dhozac $ --*- c -*-- +// $Id: vhashify.c 2685 2008-02-21 23:22:23Z ensc $ --*- c -*-- // Copyright (C) 2005 Enrico Scholz // @@ -30,7 +30,7 @@ #include "lib_internal/unify.h" #include "ensc_vector/vector.h" -#include +#include "lib_internal/crypto-wrapper.h" #include #include @@ -95,7 +95,7 @@ typedef char HashPath[HASH_MAXBITS/4 + (HASH_MAXBITS/4/2) + struct HashDirConfiguration { - hashFunction const *method; + ensc_hash_method const *method; enum { hshALL=0, hshSTART = 1, hshMIDDLE=2, hshEND = 4, hshINVALID = -1 } blocks; size_t blocksize; @@ -109,7 +109,7 @@ struct WalkdownInfo HashDirCollection hash_dirs; size_t hash_dirs_max_size; - hashFunctionContext hash_context; + ensc_hash_context hash_context; }; int wrapper_exit_code = 1; @@ -251,13 +251,13 @@ static bool convertDigest(HashPath d_path) { static char const HEX_DIGIT[] = "0123456789abcdef"; - hashFunctionContext * const h_ctx = &global_info.hash_context; - size_t d_size = h_ctx->algo->digestsize; - + ensc_hash_context * const h_ctx = &global_info.hash_context; + size_t d_size = ensc_crypto_hashctx_get_digestsize(h_ctx); + unsigned char digest[d_size]; size_t out = 0; - if (hashFunctionContextDigest(h_ctx, digest)==-1) + if (ensc_crypto_hashctx_get_digest(h_ctx, digest, NULL, d_size)==-1) return false; for (size_t in=0; @@ -275,7 +275,7 @@ convertDigest(HashPath d_path) #ifndef ENSC_TESTSUITE static bool -addStatHash(hashFunctionContext *h_ctx, struct stat const * const st) +addStatHash(ensc_hash_context *h_ctx, struct stat const * const st) { #define DECL_ATTR(X) __typeof__(st->st_##X) X #define SET_ATTR(X) .X = st->st_##X @@ -300,11 +300,11 @@ addStatHash(hashFunctionContext *h_ctx, struct stat const * const st) #undef DECL_ATTR - return hashFunctionContextUpdate(h_ctx, (void *)&tmp, sizeof tmp)!=-1; + return ensc_crypto_hashctx_update(h_ctx, (void *)&tmp, sizeof tmp)!=-1; } #else static bool -addStatHash(hashFunctionContext UNUSED *h_ctx, struct stat const UNUSED * const st) +addStatHash(ensc_hash_context UNUSED *h_ctx, struct stat const UNUSED * const st) { return true; } @@ -313,13 +313,13 @@ addStatHash(hashFunctionContext UNUSED *h_ctx, struct stat const UNUSED * const static bool calculateHashFromFD(int fd, HashPath d_path, struct stat const * const st) { - hashFunctionContext * const h_ctx = &global_info.hash_context; + ensc_hash_context * const h_ctx = &global_info.hash_context; void const * volatile buf = 0; loff_t volatile buf_size = 0; bool volatile res = false; - if (hashFunctionContextReset(h_ctx)==-1 || + if (ensc_crypto_hashctx_reset(h_ctx)==-1 || !addStatHash(h_ctx, st)) return false; @@ -340,7 +340,7 @@ calculateHashFromFD(int fd, HashPath d_path, struct stat const * const st) offset += buf_size; madvise(const_cast(void *)(buf), buf_size, MADV_SEQUENTIAL); // ignore error... - if (hashFunctionContextUpdate(h_ctx, buf, buf_size)==-1) goto out; + if (ensc_crypto_hashctx_update(h_ctx, buf, buf_size)==-1) goto out; munmap(const_cast(void *)(buf), buf_size); buf = 0; @@ -668,14 +668,15 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } + ensc_crypto_init(); switch (args.mode) { case mdMANUALLY : initModeManually(&args, argc-optind, argv+optind); break; case mdVSERVER : initModeVserver (&args, argc-optind, argv+optind); break; default : assert(false); return EXIT_FAILURE; }; - if (hashFunctionContextInit(&global_info.hash_context, - global_info.hash_conf.method)==-1) { + if (ensc_crypto_hashctx_init(&global_info.hash_context, + global_info.hash_conf.method)==-1) { WRITE_MSG(2, "Failed to initialize hash-context\n"); return EXIT_FAILURE; } @@ -691,7 +692,7 @@ int main(int argc, char *argv[]) #ifndef NDEBUG MatchList_destroy(&global_info.dst_list); freeHashList(&global_info.hash_dirs); - hashFunctionContextFree(&global_info.hash_context); + ensc_crypto_hashctx_free(&global_info.hash_context); #endif return EXIT_SUCCESS; diff --git a/src/vmemctrl.c b/src/vmemctrl.c new file mode 100644 index 0000000..471171c --- /dev/null +++ b/src/vmemctrl.c @@ -0,0 +1,187 @@ +// $Id: vmemctrl.c 2674 2008-01-27 07:55:13Z dhozac $ + +// Copyright (C) 2007 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, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "vserver.h" +#include "util.h" + +#include + +#include +#include +#include +#include +#include +#include + +#define ENSC_WRAPPERS_PREFIX "vmemctrl: " +#define ENSC_WRAPPERS_VSERVER 1 +#define ENSC_WRAPPERS_UNISTD 1 +#include "wrappers.h" + +#define CMD_HELP 0x1000 +#define CMD_VERSION 0x1001 + +#define CMD_SET 0x2000 +#define CMD_GET 0x2001 + +#define CMD_XID 0x4000 +#define CMD_BADNESS 0x4001 + +int wrapper_exit_code = 255; + + +static struct option const +CMDLINE_OPTIONS[] = { + { "help", no_argument, 0, CMD_HELP }, + { "version", no_argument, 0, CMD_VERSION }, + { "set", no_argument, 0, CMD_SET }, + { "get", no_argument, 0, CMD_GET }, + { "xid", required_argument, 0, CMD_XID }, + { "badness", required_argument, 0, CMD_BADNESS }, + { 0,0,0,0 } +}; + +struct Arguments { + xid_t xid; + int64_t badness; + bool do_set; + bool do_get; + uint32_t mask; +}; + +static inline int +hasArg(struct Arguments *args, uint32_t arg) +{ + return (args->mask & arg) == arg; +} + +static void +showHelp(int fd, char const *cmd, int res) +{ + WRITE_MSG(fd, "Usage:\n "); + WRITE_STR(fd, cmd); + WRITE_MSG(fd, + " (--set|--get) [--xid ] [--badness ]\n" + " [--] [ *]\n\n" + "Please report bugs to " PACKAGE_BUGREPORT "\n"); + + exit(res); +} + +static void +showVersion() +{ + WRITE_MSG(1, + "vmemctrl " VERSION " -- \n" + "This program is part of " PACKAGE_STRING "\n\n" + "Copyright (C) 2007 Daniel Hokka Zakrisson\n" + VERSION_COPYRIGHT_DISCLAIMER); + exit(0); +} + +static inline void +doset(struct Arguments *args) +{ + if (hasArg(args, CMD_BADNESS) && + vc_set_badness(args->xid, args->badness) == -1) { + perror(ENSC_WRAPPERS_PREFIX "vc_set_badness()"); + exit(wrapper_exit_code); + } +} + +static inline void +doget(struct Arguments *args) +{ + int64_t badness; + char buf[32]; + size_t l; + if (vc_get_badness(args->xid, &badness) == -1) { + perror(ENSC_WRAPPERS_PREFIX "vc_get_badness()"); + exit(wrapper_exit_code); + } + l = utilvserver_fmt_int64(buf, badness); + buf[l] = '\0'; + WRITE_STR(1, buf); + WRITE_MSG(1, "\n"); +} + +int main (int argc, char *argv[]) +{ + struct Arguments args = { + .do_set = false, + .do_get = false, + .xid = VC_NOCTX, + .badness = 0, + .mask = 0, + }; + + 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(); + case CMD_XID : args.xid = Evc_xidopt2xid(optarg,true); break; + case CMD_SET : args.do_set = true; break; + case CMD_GET : args.do_get = true; break; + case CMD_BADNESS : { + char *endptr; + args.badness = strtoll(optarg, &endptr, 0); + if (*endptr) { + WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "Badness '"); + WRITE_STR(2, optarg); + WRITE_MSG(2, "' is not an integer\n"); + exit(wrapper_exit_code); + } + break; + } + default : + WRITE_MSG(2, "Try '"); + WRITE_STR(2, argv[0]); + WRITE_MSG(2, " --help' for more information.\n"); + exit(wrapper_exit_code); + break; + } + args.mask |= c; + } + + if (args.xid == VC_NOCTX) args.xid = Evc_get_task_xid(0); + + if (!args.do_set && !args.do_get) { + WRITE_MSG(2, "No operation specified; try '--help' for more information\n"); + exit(wrapper_exit_code); + } + else if (((args.do_set ? 1 : 0) + (args.do_get ? 1 : 0)) > 1) { + WRITE_MSG(2, "Multiple operations specified; try '--help' for more information\n"); + exit(wrapper_exit_code); + } + + if (args.do_set) + doset(&args); + else if (args.do_get) + doget(&args); + + if (optind != argc) + Eexecvp (argv[optind],argv+optind); + return EXIT_SUCCESS; +} diff --git a/src/vnamespace.c b/src/vnamespace.c index 1536836..892ed0e 100644 --- a/src/vnamespace.c +++ b/src/vnamespace.c @@ -1,4 +1,4 @@ -// $Id: vnamespace.c 2415 2006-12-08 13:24:49Z dhozac $ --*- c -*-- +// $Id: vnamespace.c 2693 2008-03-01 00:26:31Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // diff --git a/src/vrsetup.c b/src/vrsetup.c index 00339e0..fe2315f 100644 --- a/src/vrsetup.c +++ b/src/vrsetup.c @@ -1,4 +1,4 @@ -// $Id: vrsetup.c 2403 2006-11-24 23:06:08Z dhozac $ --*- c -*-- +// $Id: vrsetup.c 2686 2008-02-28 23:12:06Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // @@ -124,7 +124,7 @@ int main(int argc, char *argv[]) else if (do_delete) Eioctl(fd, VROOT_CLR_DEV, 0); else { int dfd = EopenD(real_root_device, O_RDONLY, 0); - Eioctl(fd, VROOT_SET_DEV, (void*)dfd); + Eioctl(fd, VROOT_SET_DEV, (void*)(long)dfd); Eclose(dfd); } diff --git a/src/vsched.c b/src/vsched.c index e3a6db5..96dbe6d 100644 --- a/src/vsched.c +++ b/src/vsched.c @@ -1,4 +1,4 @@ -// $Id: vsched.c 2510 2007-03-07 20:33:56Z dhozac $ --*- c -*-- +// $Id: vsched.c 2637 2007-11-26 23:47:41Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // Copyright (C) 2006 Daniel Hokka Zakrisson @@ -183,7 +183,7 @@ static void do_dir_entry(struct vc_set_sched *sched, const char *name) if (!isNumber(buf, &val, true)) { WRITE_MSG(2, ENSC_WRAPPERS_PREFIX); WRITE_STR(2, name); - WRITE_MSG(2, ": is not a number\n"); + WRITE_MSG(2, ": is not an integer\n"); exit(1); } @@ -244,7 +244,7 @@ static void do_dir(xid_t xid, struct vc_set_sched *sched, const char *dir, int m #define SETVAL(ATTR,MASK) \ if (!isNumber(optarg, &tmp, false)) { \ - WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "non-numeric value specified for '--" #ATTR "'\n"); \ + WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "non-integer value specified for '--" #ATTR "'\n"); \ exit(wrapper_exit_code); \ } \ else { \ diff --git a/src/vspace.c b/src/vspace.c new file mode 100644 index 0000000..d715a3b --- /dev/null +++ b/src/vspace.c @@ -0,0 +1,225 @@ +// $Id: vspace.c 2693 2008-03-01 00:26:31Z dhozac $ --*- c -*-- + +// Copyright (C) 2004 Enrico Scholz +// Copyright (C) 2007 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; 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. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "util.h" +#include + +#include + +#include +#include +#include +#include +#include + +#define ENSC_WRAPPERS_PREFIX "vspace: " +#define ENSC_WRAPPERS_UNISTD 1 +#define ENSC_WRAPPERS_VSERVER 1 +#include + +#define CMD_HELP 0x1000 +#define CMD_VERSION 0x1001 + +int wrapper_exit_code = 255; + +struct option const +CMDLINE_OPTIONS[] = { + { "help", no_argument, 0, CMD_HELP }, + { "version", no_argument, 0, CMD_VERSION }, + { "new", no_argument, 0, 'n' }, + { "enter", required_argument, 0, 'e' }, + { "set", no_argument, 0, 's' }, + { "mask", required_argument, 0, 'm' }, + + { "mount", no_argument, 0, 'M' }, + { "fs", no_argument, 0, 'F' }, + { "ipc", no_argument, 0, 'I' }, + { "uts", no_argument, 0, 'U' }, + { "user", no_argument, 0, 'S' }, + { "pid", no_argument, 0, 'P' }, + { "net", no_argument, 0, 'N' }, + {0,0,0,0} +}; + +static void +showHelp(int fd, char const *cmd, int res) +{ + WRITE_MSG(fd, "Usage: "); + WRITE_STR(fd, cmd); + WRITE_MSG(fd, + " * [--] [ *]\n" + "\n" + " can be one of:\n" + " --new|-n ... create new spaces and execute there;\n" + " is mandatory in this case\n" + " --enter|-e ... enter the spaces of context and execute\n" + " there; is mandatory in this\n" + " case\n" + " --set|-s ... assign the current spaces to the current context\n" + "\n" + "* specifies the spaces to manipulate.\n" + "It can be any combination of:\n" + " --mask ... specify a mask of spaces\n" + " --mount ... the mount namespace\n" + " --fs ... the fs_struct\n" + " --ipc ... the IPC namespace\n" + " --uts ... the uts namespace\n" + " --user ... the user namespace\n" + " --pid ... the pid namespace\n" + " --net ... the network namespace\n" + "\n" + "Please report bugs to " PACKAGE_BUGREPORT "\n"); + + exit(res); +} + +static void +showVersion() +{ + WRITE_MSG(1, + "vspace " VERSION " -- manages spaces\n" + "This program is part of " PACKAGE_STRING "\n\n" + "Copyright (C) 2004 Enrico Scholz\n" + "Copyright (C) 2007 Daniel Hokka Zakrisson\n" + VERSION_COPYRIGHT_DISCLAIMER); + exit(0); +} + +static void +newSpaces(uint_least64_t mask, const char *cmd) +{ + pid_t pid; + + /* optimize default case */ + if (mask == 0) + return; + + signal(SIGCHLD, SIG_DFL); + +#ifdef NDEBUG + pid = sys_clone((int) mask | CLONE_VFORK|SIGCHLD, 0); +#else + pid = sys_clone((int) mask | SIGCHLD, 0); +#endif + + switch (pid) { + case -1 : + perror(ENSC_WRAPPERS_PREFIX "clone()"); + exit(wrapper_exit_code); + case 0 : + break; + default : + exitLikeProcess(pid, cmd, wrapper_exit_code); + } +} + +static void +enterSpaces(xid_t xid, uint_least64_t mask) +{ + if (vc_enter_namespace(xid, mask)==-1) { + perror(ENSC_WRAPPERS_PREFIX "vc_enter_namespace()"); + exit(wrapper_exit_code); + } +} + +static void +setSpaces(xid_t xid, uint_least64_t mask) +{ + if (vc_set_namespace(xid, mask)==-1) { + perror(ENSC_WRAPPERS_PREFIX "vc_set_namespace()"); + exit(wrapper_exit_code); + } +} + +int main(int argc, char *argv[]) +{ + bool do_new = false; + bool do_enter = false; + bool do_set = false; + uint_least64_t mask = 0; + xid_t xid = VC_NOCTX; + int sum = 0; + + while (1) { + int c = getopt_long(argc, argv, "+nsce:m:" "MFIUSPN", CMDLINE_OPTIONS, 0); + if (c==-1) break; + + switch (c) { + case CMD_HELP : showHelp(1, argv[0], 0); + case CMD_VERSION : showVersion(); + case 'n' : do_new = true; break; + case 's' : do_set = true; break; + case 'e' : + do_enter = true; + xid = Evc_xidopt2xid(optarg,true); + break; + case 'm' : { + unsigned long mask_l; + if (!isNumberUnsigned(optarg, &mask_l, true)) { + WRITE_MSG(2, "Invalid mask '"); + WRITE_STR(2, optarg); + WRITE_MSG(2, "'; try '--help' for more information\n"); + return wrapper_exit_code; + } + mask = mask_l; + break; + } + case 'M' : mask |= CLONE_NEWNS; break; + case 'F' : mask |= CLONE_FS; break; + case 'I' : mask |= CLONE_NEWIPC; break; + case 'U' : mask |= CLONE_NEWUTS; break; + case 'S' : mask |= CLONE_NEWUSER; break; + case 'P' : mask |= CLONE_NEWPID; break; + case 'N' : mask |= CLONE_NEWNET; break; + + default : + WRITE_MSG(2, "Try '"); + WRITE_STR(2, argv[0]); + WRITE_MSG(2, " --help' for more information.\n"); + return 255; + break; + } + } + + sum = ((do_new ? 1 : 0) + (do_enter ? 1 : 0) + + (do_set ? 1 : 0)); + + if (sum==0) + WRITE_MSG(2, "No operation was specified; try '--help' for more information\n"); + else if (sum>1) + WRITE_MSG(2, "Can not specify multiple operations; try '--help' for more information\n"); + else if (optind==argc && (do_new || do_enter)) + WRITE_MSG(2, "No command specified; try '--help' for more information\n"); + else { + if (do_new) newSpaces(mask, argv[optind]); + else if (do_set) setSpaces(VC_SAMECTX, mask); + else if (do_enter) enterSpaces(xid, mask); + + if (optindtag == VC_DYNAMIC_XID) { + if (args->verbosity >= 1) { + WRITE_MSG(2, "You must specify the tag with '--tag'; try '--help' for more information\n"); + return wrapper_exit_code; + } + else { + WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "WARNING: A dynamic tag has been specified, this is not supported\n"); + goto exec; + } + } if (args->do_create) { tag = vc_tag_create(args->tag); @@ -140,7 +150,7 @@ exec: int main (int argc, char *argv[]) { struct Arguments args = { - .tag = VC_NOCTX, + .tag = VC_DYNAMIC_XID, .do_create = false, .do_migrate = false, .is_silentexist = false, @@ -173,8 +183,6 @@ int main (int argc, char *argv[]) WRITE_MSG(2, "Neither '--create' nor '--migrate' specified; try '--help' for more information\n"); else if (args.do_create && args.do_migrate) WRITE_MSG(2, "Can not specify '--create' and '--migrate' at the same time; try '--help' for more information\n"); - else if (args.tag==VC_NOCTX) - WRITE_MSG(2, "You must specify the tag with '--tag'; try '--help' for more information\n"); else if (optind>=argc) WRITE_MSG(2, "No command given; use '--help' for more information.\n"); else diff --git a/sysv/util-vserver b/sysv/util-vserver index fe0be29..d56dadc 100755 --- a/sysv/util-vserver +++ b/sysv/util-vserver @@ -49,7 +49,7 @@ function kill_contexts() function create_dirs() { - $_MKDIR -p "$__RUNDIR" && $_MKDIR -p "$__VSHELPERSTATEDIR" && $_MKDIR -p `getPhysicalDir "$__PKGSTATEREVDIR"` + $_MKDIR -p "$__RUNDIR" && $_MKDIR -p "$__VSHELPERSTATEDIR" && $_MKDIR -p `$_READLINK "$__PKGSTATEREVDIR"` } function start() @@ -62,7 +62,7 @@ function start() _endResult $? local retval=$? _beginResult $"Loading default device map" - loadDeviceMap 0 "$__CONFDIR/.defaults/apps/vdevmap" + handleDeviceMap --set 0 "$__CONFDIR/.defaults/apps/vdevmap" _endResult $? test "$retval" -ne 0 || touch "$lockfile" return $retval diff --git a/util-vserver.spec b/util-vserver.spec index 420095e..b2a79d2 100644 --- a/util-vserver.spec +++ b/util-vserver.spec @@ -1,4 +1,4 @@ -# $Id: util-vserver.spec.in 2575 2007-08-05 18:35:40Z dhozac $ +# $Id: util-vserver.spec.in 2626 2007-10-16 00:27:58Z dhozac $ ## This package understands the following switches: ## --without dietlibc ... disable usage of dietlibc @@ -13,9 +13,9 @@ %global _localstatedir %_var -%global ver %( echo 0.30.214 | sed 's/-.*//' ) -%global subver %( s=`echo 0.30.214 | grep -- - | sed 's/.*-/./'`; echo ${s:-.1} ) -%global fullver 0.30.214 +%global ver %( echo 0.30.215 | sed 's/-.*//' ) +%global subver %( s=`echo 0.30.215 | grep -- - | sed 's/.*-/./'`; echo ${s:-.1} ) +%global fullver 0.30.215 %{!?release_func:%global release_func() %1%{?dist}} @@ -39,6 +39,7 @@ Obsoletes: vserver < %version BuildRequires: mount vconfig gawk iproute iptables BuildRequires: gcc-c++ wget which diffutils BuildRequires: e2fsprogs-devel beecrypt-devel +BuildRequires: e2fsprogs %{!?_without_doc:BuildRequires: doxygen tetex-latex} Requires(post): %name-core Requires(pre): %pkglibdir diff --git a/util-vserver.spec.in b/util-vserver.spec.in index 225dc97..6e0aef4 100644 --- a/util-vserver.spec.in +++ b/util-vserver.spec.in @@ -1,4 +1,4 @@ -# $Id: util-vserver.spec.in 2575 2007-08-05 18:35:40Z dhozac $ +# $Id: util-vserver.spec.in 2626 2007-10-16 00:27:58Z dhozac $ ## This package understands the following switches: ## --without dietlibc ... disable usage of dietlibc @@ -39,6 +39,7 @@ Obsoletes: vserver < %version BuildRequires: mount vconfig gawk iproute iptables BuildRequires: gcc-c++ wget which diffutils BuildRequires: e2fsprogs-devel beecrypt-devel +BuildRequires: e2fsprogs %{!?_without_doc:BuildRequires: doxygen tetex-latex} Requires(post): %name-core Requires(pre): %pkglibdir diff --git a/vserver-start/main.c b/vserver-start/main.c index c6ec40a..cb283c4 100644 --- a/vserver-start/main.c +++ b/vserver-start/main.c @@ -1,4 +1,4 @@ -// $Id: main.c 2589 2007-08-16 03:06:50Z dhozac $ --*- c -*-- +// $Id: main.c 2678 2008-02-16 22:09:30Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // @@ -98,7 +98,7 @@ initLock() ptr = Xmemcpy(ptr, ".startup", sizeof(".startup")); *ptr = '\0'; - if (!lockfile(&fd, tmp, LOCK_EX, 30, &err)) { + if (!lockfile(&fd, tmp, F_LOCK, 30, &err)) { WRITE_MSG(2, "vserver.start: failed to lock '"); WRITE_STR(2, tmp); WRITE_MSG(2, "': ");