From nobody Thu May 15 08:23:43 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1524157861123809.487796874851; Thu, 19 Apr 2018 10:11:01 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B90C73133E9F; Thu, 19 Apr 2018 17:10:59 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5CB0F82202; Thu, 19 Apr 2018 17:10:59 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id F2D12180BAD8; Thu, 19 Apr 2018 17:10:58 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w3JHAIUm015169 for ; Thu, 19 Apr 2018 13:10:18 -0400 Received: by smtp.corp.redhat.com (Postfix) id 7502C2026DFD; Thu, 19 Apr 2018 17:10:18 +0000 (UTC) Received: from t460.redhat.com (unknown [10.33.36.22]) by smtp.corp.redhat.com (Postfix) with ESMTP id EAD4C2026E04; Thu, 19 Apr 2018 17:10:17 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 19 Apr 2018 18:09:59 +0100 Message-Id: <20180419171002.17117-12-berrange@redhat.com> In-Reply-To: <20180419171002.17117-1-berrange@redhat.com> References: <20180419171002.17117-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 11/14] remote: refactor code for building UNIX socket paths X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.46]); Thu, 19 Apr 2018 17:11:00 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 The code for building UNIX socket paths will be getting more complex to cope with accessing various different daemons. Refactor it to eliminate the code duplication and isolation the logic for constructing paths. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/remote/remote_driver.c | 69 ++++++++++++++++++++++++++++--------------= ---- 1 file changed, 42 insertions(+), 27 deletions(-) diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 436324d252..b4b034423a 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -710,6 +710,39 @@ remoteConnectSupportsFeatureUnlocked(virConnectPtr con= n, var->ignore =3D 1; \ continue; \ } + + +static char *remoteGetUNIXSocketNonRoot(void) +{ + char *sockname =3D NULL; + char *userdir =3D virGetUserRuntimeDirectory(); + + if (!userdir) + return NULL; + + if (virAsprintf(&sockname, "%s/" LIBVIRTD_USER_UNIX_SOCKET, userdir) <= 0) { + VIR_FREE(userdir); + return NULL; + } + VIR_FREE(userdir); + + VIR_DEBUG("Chosen UNIX sockname %s", sockname); + return sockname; +} + +static char *remoteGetUNIXSocketRoot(unsigned int flags) +{ + char *sockname =3D NULL; + + if (VIR_STRDUP(sockname, + flags & VIR_DRV_OPEN_REMOTE_RO ? + LIBVIRTD_PRIV_UNIX_SOCKET_RO : LIBVIRTD_PRIV_UNIX_SOCKE= T) < 0) + return NULL; + + VIR_DEBUG("Chosen UNIX sockname %s", sockname); + return sockname; +} + /* * URIs that this driver needs to handle: * @@ -971,9 +1004,7 @@ doRemoteOpen(virConnectPtr conn, goto failed; } =20 - if (VIR_STRDUP(sockname, - flags & VIR_DRV_OPEN_REMOTE_RO ? - LIBVIRTD_PRIV_UNIX_SOCKET_RO : LIBVIRTD_PRIV_UN= IX_SOCKET) < 0) + if (!(sockname =3D remoteGetUNIXSocketRoot(flags))) goto failed; } =20 @@ -1008,9 +1039,7 @@ doRemoteOpen(virConnectPtr conn, goto failed; } =20 - if (VIR_STRDUP(sockname, - flags & VIR_DRV_OPEN_REMOTE_RO ? - LIBVIRTD_PRIV_UNIX_SOCKET_RO : LIBVIRTD_PRIV_UN= IX_SOCKET) < 0) + if (!(sockname =3D remoteGetUNIXSocketRoot(flags))) goto failed; } =20 @@ -1037,24 +1066,12 @@ doRemoteOpen(virConnectPtr conn, #ifndef WIN32 case trans_unix: if (!sockname) { - if (flags & VIR_DRV_OPEN_REMOTE_USER) { - char *userdir =3D virGetUserRuntimeDirectory(); - - if (!userdir) - goto failed; - - if (virAsprintf(&sockname, "%s/" LIBVIRTD_USER_UNIX_SOCKET= , userdir) < 0) { - VIR_FREE(userdir); - goto failed; - } - VIR_FREE(userdir); - } else { - if (VIR_STRDUP(sockname, - flags & VIR_DRV_OPEN_REMOTE_RO ? - LIBVIRTD_PRIV_UNIX_SOCKET_RO : LIBVIRTD_PRI= V_UNIX_SOCKET) < 0) - goto failed; - } - VIR_DEBUG("Proceeding with sockname %s", sockname); + if (flags & VIR_DRV_OPEN_REMOTE_USER) + sockname =3D remoteGetUNIXSocketNonRoot(); + else + sockname =3D remoteGetUNIXSocketRoot(flags); + if (!sockname) + goto failed; } =20 if ((flags & VIR_DRV_OPEN_REMOTE_AUTOSTART) && @@ -1087,9 +1104,7 @@ doRemoteOpen(virConnectPtr conn, goto failed; } =20 - if (VIR_STRDUP(sockname, - flags & VIR_DRV_OPEN_REMOTE_RO ? - LIBVIRTD_PRIV_UNIX_SOCKET_RO : LIBVIRTD_PRIV_UN= IX_SOCKET) < 0) + if (!(sockname =3D remoteGetUNIXSocketRoot(flags))) goto failed; } =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list