mirror of
https://github.com/systemd/systemd.git
synced 2026-08-04 15:10:33 +00:00
Merge pull request #33325 from poettering/vsock-ret-optional
socket-util: make return parameter for socket_address_parse_vsock() o…
This commit is contained in:
@@ -1757,13 +1757,12 @@ int socket_address_parse_vsock(SocketAddress *ret_address, const char *s) {
|
||||
int vsock_get_local_cid(unsigned *ret) {
|
||||
_cleanup_close_ int vsock_fd = -EBADF;
|
||||
|
||||
assert(ret);
|
||||
|
||||
vsock_fd = open("/dev/vsock", O_RDONLY|O_CLOEXEC);
|
||||
if (vsock_fd < 0)
|
||||
return log_debug_errno(errno, "Failed to open /dev/vsock: %m");
|
||||
|
||||
if (ioctl(vsock_fd, IOCTL_VM_SOCKETS_GET_LOCAL_CID, ret) < 0)
|
||||
unsigned tmp;
|
||||
if (ioctl(vsock_fd, IOCTL_VM_SOCKETS_GET_LOCAL_CID, ret ?: &tmp) < 0)
|
||||
return log_debug_errno(errno, "Failed to query local AF_VSOCK CID: %m");
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "process-util.h"
|
||||
#include "service-util.h"
|
||||
#include "signal-util.h"
|
||||
#include "socket-util.h"
|
||||
#include "special.h"
|
||||
|
||||
static Manager* manager_unref(Manager *m);
|
||||
@@ -143,6 +144,11 @@ static int manager_add_host_machine(Manager *m) {
|
||||
t->leader = TAKE_PIDREF(pidref);
|
||||
t->id = mid;
|
||||
|
||||
/* If vsock is available, let's expose the loopback CID for the local host (and not the actual local
|
||||
* CID, in order to return a ideally constant record for the host) */
|
||||
if (vsock_get_local_cid(/* ret= */ NULL) >= 0)
|
||||
t->vsock_cid = VMADDR_CID_LOCAL;
|
||||
|
||||
t->root_directory = TAKE_PTR(rd);
|
||||
t->unit = TAKE_PTR(unit);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user