From: Daan De Meyer Date: Tue, 13 Jun 2023 08:03:44 +0000 (+0200) Subject: socket-util: Allow specifying socket type in vsock address X-Git-Tag: v254-rc1~223^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c31984e3d007a370e7428b095b3510efafa69139;p=thirdparty%2Fsystemd.git socket-util: Allow specifying socket type in vsock address --- diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c index 9040ff7c534..d82d9fe78a6 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), };