Commit Graph

2580 Commits

Author SHA1 Message Date
Stéphane Graber
b2a3f33ec1 upstart: Make sure FORWARD is allowed for containers
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-31 09:14:35 +00:00
Serge Hallyn
5c8a9fc62d cgmanager chown: close socketpair on error paths
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-29 19:24:22 +00:00
Serge Hallyn
beebf12bbf [PATCH cgmanager chown: don't do a gratuitous fork
userns_exec_1() clones a new task to manipulate.  We don't
need to fork before calling that.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-29 16:22:23 +00:00
Natanael Copa
7a435f9abc Include config.h early for _GNU_SOURCE with uClibc
This fixes the following compile errors with uClibc:

lxc_snapshot.c: In function 'print_file':
lxc_snapshot.c:71:2: error: implicit declaration of function 'getline' [-Werror=implicit-function-declaration]
  while (getline(&line, &sz, f) != -1) {
  ^
cc1: all warnings being treated as errors

lxc_usernsexec.c: In function 'read_default_map':
lxc_usernsexec.c:181:2: error: implicit declaration of function 'getline' [-Werror=implicit-function-declaration]
  while (getline(&line, &sz, fin) != -1) {
  ^
cc1: all warnings being treated as errors

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-29 16:15:52 +00:00
Natanael Copa
d06245b81b Include config.h early for _GNU_SOURCE with musl libc
This fixes various compile errors when building with musl libc. For
example:

In file included from start.c:66:0:
monitor.h:38:12: error: 'NAME_MAX' undeclared here (not in a function)
  char name[NAME_MAX+1];
            ^
start.c: In function 'setup_signal_fd':
start.c:202:2: error: implicit declaration of function 'sigfillset' [-Werror=implicit-function-declaration]
  if (sigfillset(&mask) ||
  ^

...

In file included from freezer.c:36:0:
monitor.h:39:12: error: 'NAME_MAX' undeclared here (not in a function)
  char name[NAME_MAX+1];
            ^
...

In file included from cgroup.c:45:0:
conf.h:87:13: error: 'IFNAMSIZ' undeclared here (not in a function)
  char veth1[IFNAMSIZ]; /* needed for deconf */
             ^
cgroup.c: In function 'find_cgroup_subsystems':
cgroup.c:230:3: error: implicit declaration of function 'strdup' [-Werror=implicit-function-declaration]
   (*kernel_subsystems)[kernel_subsystems_count] = strdup(line);
   ^
...

In file included from conf.c:65:0:
conf.h:87:13: error: 'IFNAMSIZ' undeclared here (not in a function)
  char veth1[IFNAMSIZ]; /* needed for deconf */
             ^
In file included from conf.c:66:0:
conf.c: In function 'run_buffer':
log.h:263:9: error: implicit declaration of function 'strsignal' [-Werror=implicit-function-declaration]
  struct lxc_log_locinfo locinfo = LXC_LOG_LOCINFO_INIT;  \
         ^
...

af_unix.c: In function 'lxc_abstract_unix_send_credential':
af_unix.c:208:9: error: variable 'cred' has initializer but incomplete type
  struct ucred cred = {
         ^
af_unix.c:209:3: error: unknown field 'pid' specified in initializer
   .pid = getpid(),
   ^
af_unix.c:209:3: error: excess elements in struct initializer [-Werror]
af_unix.c:209:3: error: (near initialization for 'cred') [-Werror]
af_unix.c:210:3: error: unknown field 'uid' specified in initializer
   .uid = getuid(),
   ^
af_unix.c:210:3: error: excess elements in struct initializer [-Werror]
af_unix.c:210:3: error: (near initialization for 'cred') [-Werror]
af_unix.c:211:3: error: unknown field 'gid' specified in initializer
   .gid = getgid(),
   ^

and more...

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-29 16:15:52 +00:00
Natanael Copa
8b6d8b712b Check for non-posix utmpxname in configure
utmpx.h is specified in POSIX but utmpxname is not so we check for
utmpxname in configure script.

This fixes the following compile error with musl libc:
lxcutmp.c: In function 'utmp_get_runlevel':
lxcutmp.c:249:2: error: implicit declaration of function 'utmpxname' [-Werror=implicit-function-declaration]
  if (!access(path, F_OK) && !utmpxname(path))
    ^

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-29 16:15:52 +00:00
Natanael Copa
47add7e5b6 Don't include linux/if_bridge.h
Instead rely on struct ethhdr from net/ethernet.h

This fixes build error with musl libc:
In file included from /usr/include/linux/if_bridge.h:17:0,
                 from network.c:47:
/usr/include/linux/if_ether.h:133:8: error: redefinition of 'struct ethhdr'
 struct ethhdr {
        ^
In file included from /usr/include/net/ethernet.h:10:0,
                 from network.c:42:
/usr/include/netinet/if_ether.h:93:8: note: originally defined here
 struct ethhdr {
        ^

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-29 16:15:52 +00:00
Natanael Copa
f9870943ec Include limits.h for NAME_MAX
This fixes compile error with musl libc:
In file included from start.c:66:0:
monitor.h:38:12: error: 'NAME_MAX' undeclared here (not in a function)
  char name[NAME_MAX+1];
            ^

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-29 16:15:52 +00:00
Natanael Copa
65441ac9e5 Include strings.h for strcasecmp
This fixes the following error with musl libc:
In file included from start.c:59:0:
log.h: In function 'lxc_log_priority_to_int':
log.h:136:2: error: implicit declaration of function 'strcasecmp' [-Werror=implicit-function-declaration]

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-29 16:15:50 +00:00
Natanael Copa
85dce4a543 Use the standard 'unsigned int' instead or non-standard 'uint'
This fixes compile error when build with musl libc:
conf.h:92:2: error: unknown type name 'uint'
  uint   fmask;
  ^

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-29 16:15:46 +00:00
Natanael Copa
37515ebdf0 Include poll.h instead of sys/poll.h
poll.h is defined in POSIX:
http://pubs.opengroup.org/onlinepubs/009695399/functions/poll.html

This fixes a compile warning when building with musl libc:
In file included from start.c:46:0:
/usr/include/sys/poll.h:1:2: error: #warning redirecting incorrect #include <sys
/poll.h> to <poll.h> [-Werror=cpp]
 #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
  ^

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-29 16:15:42 +00:00
Serge Hallyn
565e571c8f userns_exec_1: catch errors in the spawned process.
lxc_map_ids can call system(3), which on error from the
spawned process returns > 0.  No path should return > 0
when it meant success.  So check the lxc_map_ids() value
to be != rather than just < 0.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-29 15:56:54 +00:00
Robert Vogelgesang
b1dad6f60d Two further cgroup cleanups:
Move the test of mp->need_cpuset_init to a logically better place.
Avoid misleading error messages.

Signed-off-by: Robert Vogelgesang <vogel@users.sourceforge.net>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-01-29 15:10:59 +00:00
Natanael Copa
6ff9f8ec1c lxc-alpine: disable sys_admin by default
It is normally not needed.

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-29 13:43:52 +00:00
Stéphane Graber
8a3c76b24d ubuntu/ubuntu-cloud: Add support for arm64 and ppc64el
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-29 11:43:22 +00:00
Robert Vogelgesang
a27ed52b34 lxc-monitord.log should not be created with mode 0666
lxc_monitord_spawn() in src/lxc/monitor.c contained "umask(0);", and
because of this, lxc-monitord created lxc-monitord.log with mode 0666.
World-writeable log files are bad, so remove this umask(0).

Signed-off-by: Robert Vogelgesang <vogel@users.sourceforge.net>
Acked-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-29 11:43:03 +00:00
Kaarle Ritvanen
1bdedfacc2 lxc-alpine: mount tmpfs on /dev/shm
Signed-off-by: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-29 11:42:43 +00:00
Serge Hallyn
bac806d1a1 lxc_container_new: fail on config file parse error
If we have a bad config file entry, fail.  Otherwise lxc-start
will proceed with a partial configuration.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-01-29 09:57:29 +00:00
Serge Hallyn
934b1673cd cgroups: adjust previous commit
Remove a memory leak on error path.

Only try to initialize cpuset if cgroup.clonechildren does not exist.

Bump the max value we read from cpuset.{cpus,mems} to 1024.

If cpuset.cpus or .mems is already initialized but is too long, don't fail.

If parent's cpuset.cpus or .mems is too long, record an error and fail.
If anyone actually runs into this, we can simply allocate the required
length as needed, but we don't expect anyone to run into this.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-01-29 09:56:28 +00:00
Robert Vogelgesang
d703c2b15a cgroupfs: cpuset support for kernels without cgroup.clone_children
Hi,

as promised last week, here's my patch for cpuset cgroup support for
kernels without the cgroup.clone_children feature.

My initial patch used "#include <linux/version.h>" and the macros defined
there to decide if cgroup.clone_children should be used or not.  After
having seen Serge Hallyn's patch which he posted to the list last Wednesday,
where he used stat() to check if the cgroup.clone_children file is there,
I rewrote my patch to do the same.

The patch is against 1.0.0.beta3, and it is tested successfully with
RHEL-6's kernel version 2.6.32-431.3.1.el6, compiled without cgmanager
(I've so far not tried to use cgmanager in RHEL-6).

In addition to fixing the cpuset cgroup setup, this patch also fixes a
wrong argument in a call to handle_cgroup_settings() in the same context.

	Robert

Signed-off-by: Robert Vogelgesang <vogel@users.sourceforge.net>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-01-29 09:07:28 +00:00
Stéphane Graber
9749441a0e
gentoo: Fix /dev/tun generation
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-28 12:22:06 +00:00
Stéphane Graber
705bfae0d8 gentoo: Add basic userns config
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-28 09:57:46 +00:00
gza
1609f0fbe1 gentoo: fix comments about hardened
Signed-off-by: gza <github.guillaume@zitta.fr>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-28 09:57:42 +00:00
gza
cae3584efc gentoo: template rework
Now splited config 2 settings available
* common
** featureful oriented settings
* moresecure
** security oriented

Signed-off-by: gza <github.guillaume@zitta.fr>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-28 09:57:39 +00:00
gza
2562784e95 gentoo: fix typo, may break host init system
Signed-off-by: gza <github.guillaume@zitta.fr>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-28 09:57:36 +00:00
S.Çağlar Onur
8ac1837774 export lxc_cmd_get_config_item via API and use in lxc-info
This allows external users to query network related config items
from the running containers.

changes since v1:
- function name change

Signed-off-by: S.Çağlar Onur <caglar@10ur.org>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-27 23:03:14 +00:00
Stéphane Graber
4deda3b5dd
change version to 1.0.0.beta3 in configure.ac
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-27 13:52:20 +00:00
Serge Hallyn
c59ce7de5e attach test: always flush stdout
Otherwise, after a fork, both pids may be flushing.  When
redirecting output to a file, this causes duplicate (or really
far worse) output.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-27 12:13:39 +00:00
Stéphane Graber
b56661fead lxc-download: Tweak cache location
- Also include the variant in the path
 - Fix invalid LXC_CACHE_BASE
 - Drop redundant code

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-27 09:43:56 +00:00
Luka Perkov
6849cb5b57 lxccontainer: fix whitespaces
Signed-off-by: Luka Perkov <luka.perkov@sartura.hr>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-27 09:09:37 +00:00
KATOH Yasufumi
ef65fe134f doc: fix the SEE ALSO section of Japanese lxc-user-nic(1)
* update for commit e43157b4b2

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-27 09:08:26 +00:00
Stéphane Graber
f4a5c1b154 Ignore lxc-test-usernic
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-26 11:46:56 +00:00
Qiang Huang
487d80082f lxccontainer: remove PID file after lxc_start return
Make the way symmetric. This also fix the file leak in
daemon model.

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-25 19:09:14 -05:00
S.Çağlar Onur
a684f0b77d close the fd on error
Signed-off-by: S.Çağlar Onur <caglar@10ur.org>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2014-01-25 18:49:18 -05:00
Serge Hallyn
0bc8db6b2f lxcapi_clone: exit early on snapshot clones
If the user explicitly asks for a snapshot clone (in which
case maybe_snap is not set), we cannot abide this currently.
Rather than exit later with more cryptic error messages, exit
out early.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-25 18:04:55 -05:00
Kaarle Ritvanen
691ac4a339 lxc-alpine: copy /etc/TZ to container if present
Signed-off-by: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-25 18:04:46 -05:00
Stéphane Graber
843a58743e
lxc-download: Fix to work without mktemp
mktemp isn't always available in busybox.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-24 18:23:28 -05:00
Serge Hallyn
0996e18ad5 cgmanager: chown cgroups to the container root
After this patch, starting an unprivileged container using
cgmanager gets the cgroup chown to the container root, so
that it can install the cgmanager (proxy) and make cgroup
requests.

(Still desirable and not in this patch is the automatic setup of
/sys/fs/cgroup/manager/sock, which you can currently do with
two lxc.mount.entries)

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-24 17:27:44 -05:00
Stéphane Graber
a38c2e6f8d tests: Fix startone
- Fix cgroup test to work on multi-core systems
 - Drop user interaction

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-24 15:56:32 -05:00
Stéphane Graber
52d21d4051 conf: Fix clear_config_item on lxc.network entries
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-24 15:40:50 -05:00
Stéphane Graber
8cb8e496d0 tests: Fix lxc-user-nic path
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-24 14:25:15 -05:00
Stéphane Graber
e6c6d62287
tests: Fix python3 API test
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-24 14:00:02 -05:00
Stéphane Graber
53df623dbd
tests: Don't require user interaction in containertests
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-24 13:49:47 -05:00
Stéphane Graber
a1258e6dae
Fix previous change to use defined()
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-24 13:42:37 -05:00
Stéphane Graber
92e23841a2
Support __NR_set_ns as well.
Apparently some older systems didn't have __NR_setns but had __NR_set_ns.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-24 13:27:26 -05:00
Dwight Engen
e43157b4b2 doc: fix See Also lxc-usernet.conf -> lxc-usernet
Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-24 13:07:50 -05:00
Michael H. Warfield
08754f305b Update CentOS and Fedora templates to support archtectures option.
Added code to the CentOS and Fedora templates so that x86 32 bit containers
may be built on x86_64 platforms.  Like archectectures may also be trivially
used as well.

Option added is "-a {arch}".

Additionally cleaned up some bash specific logic.

Signed-off-by: Michael H. Warfield <mhw@WittsEnd.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-24 12:36:40 -05:00
Serge Hallyn
3ec1648d8e idmap_add_id: fix broken behavior
The geteuid() addition is being made the first element of the lxc_list,
but the first element is just a head whose entry is ignored.  Therefore
userns_exec_1() was starting its tasks without the caller's uid mapped
into the namespace.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-24 11:52:42 -05:00
Dwight Engen
9f2fd74c7b add lua-alt-getopt dependency
Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-24 11:52:39 -05:00
KATOH Yasufumi
3220ecebfc doc: Add Japanese lxc-config(1)
Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-01-24 11:52:35 -05:00