streams: Add ability to listen on any VSOCK CID

Can be useful if the CID inside the VM is not known.

The \htmlonly\endhtmlonly hack is used to avoid compiler warnings due
to /* inside a block comment.
This commit is contained in:
Tobias Brunner
2024-05-17 14:00:12 +02:00
parent 3d7d527ad9
commit f8c6ff1fc1
2 changed files with 15 additions and 2 deletions
@@ -1,4 +1,5 @@
/*
* Copyright (C) 2024 Tobias Brunner
* Copyright (C) 2024 Thomas Egerer
*
* Copyright (C) secunet Security Networks AG
@@ -40,7 +41,15 @@ static int stream_parse_uri_vsock(char *uri, struct sockaddr_vm *addr)
}
uri += strlen("vsock://");
cid = strtoul(uri, &uri, 10);
if (*uri == '*')
{
cid = VMADDR_CID_ANY;
uri++;
}
else
{
cid = strtoul(uri, &uri, 10);
}
if (*uri != ':' || cid > UINT_MAX)
{
@@ -1,4 +1,5 @@
/*
* Copyright (C) 2024 Tobias Brunner
* Copyright (C) 2024 Thomas Egerer
*
* Copyright (C) secunet Security Networks AG
@@ -29,7 +30,10 @@
* identifier, CID), followed by a colon separated port. CID as well as port
* are 32-bit unsigned integers. A full VSOCK uri looks something like:
*
* vsock://2:12345
* * vsock://1:12345 (loopback)
* * vsock://2:12345 (connect from the VM to the well-known CID of the host)
* * vsock://3:12345 (CID 3 as assigned to a VM)
* * vsock://\htmlonly\endhtmlonly*:12345 (listen on any CID)
*
* There is no default port, so a colon after vsock:// is mandatory.
*