]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/basic/virt.h
basic/virt: treat "podman" as separate container type
[thirdparty/systemd.git] / src / basic / virt.h
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
c2f1db8f 2#pragma once
b52aae1d 3
75f86906
LP
4#include <stdbool.h>
5
6#include "macro.h"
b52aae1d 7
248fab74 8enum {
b52aae1d 9 VIRTUALIZATION_NONE = 0,
75f86906
LP
10
11 VIRTUALIZATION_VM_FIRST,
12 VIRTUALIZATION_KVM = VIRTUALIZATION_VM_FIRST,
13 VIRTUALIZATION_QEMU,
14 VIRTUALIZATION_BOCHS,
15 VIRTUALIZATION_XEN,
16 VIRTUALIZATION_UML,
17 VIRTUALIZATION_VMWARE,
18 VIRTUALIZATION_ORACLE,
19 VIRTUALIZATION_MICROSOFT,
20 VIRTUALIZATION_ZVM,
21 VIRTUALIZATION_PARALLELS,
aa0c3427 22 VIRTUALIZATION_BHYVE,
1fdf07f5 23 VIRTUALIZATION_QNX,
095b9cf4 24 VIRTUALIZATION_ACRN,
75f86906
LP
25 VIRTUALIZATION_VM_OTHER,
26 VIRTUALIZATION_VM_LAST = VIRTUALIZATION_VM_OTHER,
27
28 VIRTUALIZATION_CONTAINER_FIRST,
29 VIRTUALIZATION_SYSTEMD_NSPAWN = VIRTUALIZATION_CONTAINER_FIRST,
30 VIRTUALIZATION_LXC_LIBVIRT,
31 VIRTUALIZATION_LXC,
32 VIRTUALIZATION_OPENVZ,
33 VIRTUALIZATION_DOCKER,
90fb1f09 34 VIRTUALIZATION_PODMAN,
9fb16425 35 VIRTUALIZATION_RKT,
6c8a2c67 36 VIRTUALIZATION_WSL,
75f86906
LP
37 VIRTUALIZATION_CONTAINER_OTHER,
38 VIRTUALIZATION_CONTAINER_LAST = VIRTUALIZATION_CONTAINER_OTHER,
39
b52aae1d
LP
40 _VIRTUALIZATION_MAX,
41 _VIRTUALIZATION_INVALID = -1
248fab74 42};
b52aae1d 43
75f86906
LP
44static inline bool VIRTUALIZATION_IS_VM(int x) {
45 return x >= VIRTUALIZATION_VM_FIRST && x <= VIRTUALIZATION_VM_LAST;
46}
47
48static inline bool VIRTUALIZATION_IS_CONTAINER(int x) {
49 return x >= VIRTUALIZATION_CONTAINER_FIRST && x <= VIRTUALIZATION_CONTAINER_LAST;
50}
51
52int detect_vm(void);
53int detect_container(void);
54int detect_virtualization(void);
55
299a34c1 56int running_in_userns(void);
7f4b3c5e
LP
57int running_in_chroot(void);
58
75f86906
LP
59const char *virtualization_to_string(int v) _const_;
60int virtualization_from_string(const char *s) _pure_;