From c31984e3d007a370e7428b095b3510efafa69139 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Tue, 13 Jun 2023 10:03:44 +0200 Subject: [PATCH] socket-util: Allow specifying socket type in vsock address --- src/basic/socket-util.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c index 9040ff7c53..d82d9fe78a 100644 --- a/src/basic/socket-util.c +++ b/src/basic/socket-util.c @@ -1522,13 +1522,20 @@ int socket_address_parse_vsock(SocketAddress *ret_address, const char *s) { _cleanup_free_ char *n = NULL; char *e, *cid_start; unsigned port, cid; - int r; + int type, r; assert(ret_address); assert(s); - cid_start = startswith(s, "vsock:"); - if (!cid_start) + if ((cid_start = startswith(s, "vsock:"))) + type = 0; + else if ((cid_start = startswith(s, "vsock-dgram:"))) + type = SOCK_DGRAM; + else if ((cid_start = startswith(s, "vsock-seqpacket:"))) + type = SOCK_SEQPACKET; + else if ((cid_start = startswith(s, "vsock-stream:"))) + type = SOCK_STREAM; + else return -EPROTO; e = strchr(cid_start, ':'); @@ -1557,6 +1564,7 @@ int socket_address_parse_vsock(SocketAddress *ret_address, const char *s) { .svm_family = AF_VSOCK, .svm_port = port, }, + .type = type, .size = sizeof(struct sockaddr_vm), };