Tighten our VM check: whether we run in a VM is not enough to do
AF_VSOCK. We also need to check if we are run in a container, because if
we run in a container inside a VM then we should *not* do the AF_VSOCK
stuff, but leave the port free for the VM itself.
As discussed here:
https://github.com/systemd/systemd/pull/31544#issuecomment-
1971455401
assert(dest);
assert(generated_sshd_template_unit);
- Virtualization v = detect_vm();
+ Virtualization v = detect_virtualization();
if (v < 0)
return log_error_errno(v, "Failed to detect if we run in a VM: %m");
- if (v == VIRTUALIZATION_NONE) {
+ if (!VIRTUALIZATION_IS_VM(v)) {
+ /* NB: if we are running in a container inside a VM, then we'll *not* do AF_VSOCK stuff */
log_debug("Not running in a VM, not listening on AF_VSOCK.");
return 0;
}