Christian Brauner
a3aba11021
netns_ifaddrs: fix missing include
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-26 18:14:46 +02:00
Stéphane Graber
323a7f1871
Merge pull request #2648 from brauner/2018-09-26/compiler_attributes
...
compiler: add __hot attribute
2018-09-26 10:44:51 -04:00
Stéphane Graber
6de0734bb1
Merge pull request #2647 from brauner/2018-09-23/noreturn_android
...
compiler: fix __noreturn on bionic
2018-09-26 10:44:36 -04:00
Christian Brauner
afeec9b739
compiler: add __hot attribute
...
This instructs the compiler to better optimize the config parsing code.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-26 14:52:27 +02:00
Christian Brauner
d17947f8f3
compiler: fix __noreturn on bionic
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-26 14:38:41 +02:00
Christian Brauner
ebc10afe21
cgfsng: do not go into infinite loop
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-26 14:16:10 +02:00
Christian Brauner
a3650c0c4d
cgfsng: s/25/INTTYPE_TO_STRLEN(pid_t)/g
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-26 14:13:05 +02:00
Christian Brauner
5ce03bc048
cgfsng: ensure no-reuse in cgfsng_monitor_create()
...
The same way we need to ensure that no existing cgroups are reused for
the payload in cgfsng_payload_create() we need to ensure that no
existing cgroups are reused for the monitor. Technially this is less of
an issue since there currently is no logic for the monitor to apply
limits to its cgroup but it is still the proper way to do it.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-26 14:11:47 +02:00
Christian Brauner
625ad37b59
cgroups: introduce helper macros
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-26 14:11:47 +02:00
Christian Brauner
434c8e15c9
cgfsng: add cgfsng_monitor_destroy()
...
Since we switched to the new cgroup scoping scheme that places the
container payload into lxc.payload/<container-name> and
lxc.monitor/<container-name> deletion becomes slightly more complicated.
The monitor will be able to rm_rf(lxc.payload/<container-name>) but will
not be able to rm_rf(lxc.monitor/<container-name>) since it will be
located in that cgroup and it will thus be populated.
My current solution to this is to create a lxc.pivot cgroup that only
exists so that the monitor process on container stop can pivot into it,
call rm_rf(lxc.monitor/<container-name>) and can then exit. This group
has not function whatsoever apart from this and can thus be shared by
all monitor processes.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-26 14:11:47 +02:00
Christian Brauner
3999f50bd2
cgfsng: s/cgfsng_destroy/cgfsng_payload_destroy/g
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-26 14:08:26 +02:00
Stéphane Graber
810fd51c92
Merge pull request #2618 from CameronNemo/lxcmountroot
...
apparmor: account for specified rootfs path (closes #2617 )
2018-09-25 14:46:21 -04:00
Stéphane Graber
34d66b6877
Merge pull request #2646 from brauner/2018-09-24/cgroup_tweaks
...
cgfsng: set errno to ENOENT on get_hierarchy()
2018-09-24 23:35:03 +02:00
Christian Brauner
27a5132c22
cgfsng: set errno to ENOENT on get_hierarchy()
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-24 22:58:45 +02:00
Christian Brauner
084010482f
doc: tweak documentation a little
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-24 22:07:34 +02:00
Christian Brauner
f3672cf120
Merge pull request #2645 from stgraber/master
...
stop: Only freeze if freezer is available
2018-09-24 21:35:15 +02:00
Stéphane Graber
d18d43da89
stop: Only freeze if freezer is available
...
Closes #2644
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2018-09-24 14:41:42 -04:00
Stéphane Graber
36be8e6c4a
Merge pull request #2640 from brauner/2018-09-23/netns_getifaddrs
...
network: add netns_getifaddrs() implementation
2018-09-24 00:35:21 +02:00
Christian Brauner
61204b93dd
autotools: fix lxc_user_nic build
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-23 21:19:35 +02:00
Christian Brauner
d3d5554a97
netns_ifaddrs: mark casts as safe
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-23 21:19:35 +02:00
Christian Brauner
b1e44ed125
tree_wide: switch to netns_getifaddrs()
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-23 21:19:35 +02:00
Christian Brauner
cc6119a033
network: add netns_getifaddrs() implementation
...
This commit introduces my concept of a network namespace aware
getifaddrs(), i.e. netns_getifaddrs(). This presupposes a kernel that
carries my IF{L}A_TARGET_NETNSID patches:
struct netns_ifaddrs {
struct netns_ifaddrs *ifa_next;
/* Can - but shouldn't be - NULL. */
char *ifa_name;
/* This field is not present struct ifaddrs. */
int ifa_ifindex;
unsigned ifa_flags;
/* This field is not present struct ifaddrs. */
int ifa_mtu;
/* This field is not present struct ifaddrs. */
int ifa_prefixlen;
struct sockaddr *ifa_addr;
struct sockaddr *ifa_netmask;
union {
struct sockaddr *ifu_broadaddr;
struct sockaddr *ifu_dstaddr;
} ifa_ifu;
/* If you don't know what this is for don't touch it. */
void *ifa_data;
};
which is a superset of struct ifaddrs. It contains additional
information such as the mtu, ifindex of the interface and the prefix
length of the address.
Note that the field ordering is different. So don't get any ideas of
using memcpy() to copy from an old struct ifaddrs into a struct
netns_ifaddrs.
int netns_getifaddrs(struct netns_ifaddrs **ifap, __s32 netns_id, bool *netnsid_aware)
takes a network namespace identifier as argument which identifies the
target network namespace.
If successfull, i.e. netns_getifaddrs() returns 0, callers should check
the bool *netnsid_aware return argument. If it is true then
RTM_GET{ADDR,LINK} requests are fully netnsid aware. If it is false then
they are not and the information returned in struct netns_ifaddrs does
*not* contain correct information about the target network namespace
identified by netnsid.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-23 21:19:35 +02:00
Stéphane Graber
7e270c97f1
Merge pull request #2639 from brauner/2018-09-23/compiler_based_hardening
...
compiler: compiler based hardening
2018-09-23 20:43:56 +02:00
Stéphane Graber
e854e63b8b
Merge pull request #2642 from brauner/2018-09-23/android
...
compiler: __attribute__((noreturn)) on bionic
2018-09-23 20:43:46 +02:00
Christian Brauner
246736be38
autotools: support -Wstrict-prototypes
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-23 20:22:41 +02:00
Christian Brauner
6ce39620fd
autotools: support -Wcast-align
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-23 20:22:41 +02:00
Christian Brauner
534aaf45d2
compiler: __attribute__((noreturn)) on bionic
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-23 20:16:12 +02:00
Stéphane Graber
e006ecbc9d
Merge pull request #2637 from brauner/2018-09-22/bugfixes
...
macro: add STRLITERALLEN() and STRARRAYLEN()
2018-09-23 19:31:05 +02:00
Stéphane Graber
854d13e22e
Merge pull request #2641 from brauner/2018-09-23/cgroup_scoping_fixes
...
cgfsng: copy parent's cpu settings for monitor too
2018-09-23 19:30:21 +02:00
Christian Brauner
f83903274e
cgfsng: copy parent's cpu settings for monitor too
...
Closes https://github.com/lxc/lxd/issues/5060 .
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-23 16:26:31 +02:00
Christian Brauner
6333c91505
tree-wide: replace sizeof() with SIZEOF2STRLEN()
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-23 12:56:13 +02:00
Christian Brauner
36dee4a2b6
macro: add STRLITERALLEN() and STRARRAYLEN()
...
sizeof() implementation for string literals and string arrays that makes
it behave like strlen() for strings.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-23 12:56:13 +02:00
Christian Brauner
b857f4be4f
cgfsng: s/__cgfsng_ops__/__cgfsng_ops/g
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-23 12:37:43 +02:00
Christian Brauner
181a780fb6
compiler: s/__noreturn__/__noreturn/g
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-23 12:37:42 +02:00
Christian Brauner
cab25bd54d
compiler: s/__fallthrough__/__fallthrough/g
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-23 12:37:41 +02:00
Stéphane Graber
3c97aeb8f0
Merge pull request #2636 from brauner/2018-09-21/fix_implicit_fallthrough
...
autotools: fix check for -Wimplicit-fallthrough
2018-09-23 01:04:51 +02:00
Christian Brauner
62f2b7448d
Merge pull request #2627 from 2xsec/bugfix
...
conf: realpath() uses null as second parameter to prevent buffer overflow
2018-09-22 11:36:16 +02:00
Christian Brauner
23b44c365e
autotools: fix wrong AX_CHECK_COMPILE_FLAG test
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-21 23:45:33 +02:00
Serge Hallyn
ea0f0c849a
Merge pull request #2606 from brauner/2018-09-09/cgroup_escape
...
cgroups: scoping for cgroup v2
2018-09-21 09:54:25 -05:00
Christian Brauner
d28779d94c
cgfsng: add missing __cgfsng_ops__ attributes
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-21 16:52:25 +02:00
Christian Brauner
2d172fc734
tests: adapt cgroup tests to new layout
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-21 16:52:25 +02:00
Christian Brauner
eeef32bbda
cgfsng: cgfsng_monitor_enter()
...
brauner@wittgenstein|~
> sudo systemctl status lxc@c1
● lxc@c1.service - LXC Container: c1
Loaded: loaded (/lib/systemd/system/lxc@.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2018-09-11 10:42:22 CEST; 38s ago
Docs: man:lxc-start
man:lxc
Process: 29855 ExecStart=/usr/bin/lxc-start -n c1 -p /run/lxc/c1.pid (code=exited, status=0/SUCCESS)
Tasks: 18 (limit: 4915)
Memory: 32.1M
CGroup: /system.slice/system-lxc.slice/lxc@c1.service
├─lxc.monitor
│ └─c1
│ └─29870 [lxc monitor] /var/lib/lxc c1
└─lxc.payload
└─c1
├─init.scope
│ └─29878 /sbin/init
└─system.slice
├─console-getty.service
│ └─30028 /sbin/agetty -o -p -- \u --noclear --keep-baud console 115200,38400,9600 linux
├─cron.service
│ └─30019 /usr/sbin/cron -f
├─dbus.service
│ └─30020 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
├─networkd-dispatcher.service
│ └─30016 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
├─rsyslog.service
│ └─30017 /usr/sbin/rsyslogd -n
├─system-container\x2dgetty.slice
│ ├─container-getty@0.service
│ │ └─30027 /sbin/agetty -o -p -- \u --noclear --keep-baud pts/0 115200,38400,9600 vt220
│ ├─container-getty@1.service
│ │ └─30030 /sbin/agetty -o -p -- \u --noclear --keep-baud pts/1 115200,38400,9600 vt220
│ ├─container-getty@2.service
│ │ └─30026 /sbin/agetty -o -p -- \u --noclear --keep-baud pts/2 115200,38400,9600 vt220
│ └─container-getty@3.service
│ └─30029 /sbin/agetty -o -p -- \u --noclear --keep-baud pts/3 115200,38400,9600 vt220
├─systemd-journald.service
│ └─29976 /lib/systemd/systemd-journald
├─systemd-logind.service
│ └─30018 /lib/systemd/systemd-logind
├─systemd-networkd.service
│ └─29996 /lib/systemd/systemd-networkd
├─systemd-resolved.service
│ └─30014 /lib/systemd/systemd-resolved
└─systemd-udevd.service
└─29986 /lib/systemd/systemd-udevd
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-21 16:52:25 +02:00
Christian Brauner
634ab5ed7d
cgroups: add monitor_enter()
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-21 16:52:25 +02:00
Christian Brauner
72068e7470
cgfsng: add cgfsng_monitor_create()
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-21 16:52:25 +02:00
Christian Brauner
6439f06e78
cgroups: add monitor_create()
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-21 16:52:25 +02:00
Christian Brauner
e09b62f943
cgroups: add monitor_full_path member
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-21 16:47:04 +02:00
Christian Brauner
d39e9d8b04
cgroups: add monitor_cgroup member
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-21 16:47:04 +02:00
Christian Brauner
bb221ad14f
cgroups: s/base_cgroup/container_base_path/g
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-21 16:47:04 +02:00
Christian Brauner
c72d45f71f
cgroups: add missing string.h include
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-21 16:47:04 +02:00
Christian Brauner
eb6971363b
cgroups: s/fullcgpath/container_full_path/g
...
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
2018-09-21 16:47:03 +02:00