From 983f8610b7b7f1eb745e05edaaa3f5cd828cb93c Mon Sep 17 00:00:00 2001 From: Gabriel <10530980+gpotter2@users.noreply.github.com> Date: Mon, 22 Jun 2026 21:57:03 +0200 Subject: [PATCH] Add handling for '-1' when parsing vsock CID (#42654) Currently `systemd-ssh-generator` supports `systemd.ssh_listen=vsock::22` and aliases the "empty CID" towards `VMADDR_CID_ANY`. VMADDR_CID_ANY is -1, so it's confusing from a user experience that `systemd.ssh_listen=vsock:-1:22` isn't supported. --- src/basic/socket-util.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c index 614f762b57..d8f41f0f9c 100644 --- a/src/basic/socket-util.c +++ b/src/basic/socket-util.c @@ -1730,7 +1730,7 @@ int vsock_parse_cid(const char *s, unsigned *ret) { return -EINVAL; /* Parsed an AF_VSOCK "CID". This is a 32bit entity, and the usual type is "unsigned". We recognize - * the three special CIDs as strings, and otherwise parse the numeric CIDs. */ + * the four special CIDs as strings, and otherwise parse the numeric CIDs. */ if (streq(s, "hypervisor")) *ret = VMADDR_CID_HYPERVISOR; @@ -1738,6 +1738,8 @@ int vsock_parse_cid(const char *s, unsigned *ret) { *ret = VMADDR_CID_LOCAL; else if (streq(s, "host")) *ret = VMADDR_CID_HOST; + else if (STR_IN_SET(s, "any", "-1")) + *ret = VMADDR_CID_ANY; else return safe_atou(s, ret);