[libvirt PATCH 04/10] remote: consistently use flags for passing ro/user/autostart props

Daniel P. Berrangé berrange at redhat.com
Wed May 26 13:20:11 UTC 2021


We have helper methods that return boolans for ro/user/autostart
properties. We then pack them into a flags parameter, and later
unpack them again. This makes te code consistently use flags
throughout.

Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
---
 src/remote/remote_driver.c     | 16 ++++-----------
 src/remote/remote_sockets.c    | 37 ++++++++++++++++------------------
 src/remote/remote_sockets.h    |  6 ++----
 src/remote/remote_ssh_helper.c | 13 ++++++------
 4 files changed, 30 insertions(+), 42 deletions(-)

diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
index 6b615b9286..d03369b168 100644
--- a/src/remote/remote_driver.c
+++ b/src/remote/remote_driver.c
@@ -917,9 +917,7 @@ doRemoteOpen(virConnectPtr conn,
     case REMOTE_DRIVER_TRANSPORT_LIBSSH2:
         if (!sockname &&
             !(sockname = remoteGetUNIXSocket(transport, mode, driver_str,
-                                             flags & REMOTE_DRIVER_OPEN_RO,
-                                             flags & REMOTE_DRIVER_OPEN_USER,
-                                             &daemon_name)))
+                                             flags, &daemon_name)))
             goto failed;
         break;
 
@@ -1232,9 +1230,7 @@ remoteConnectOpen(virConnectPtr conn,
 {
     struct private_data *priv;
     int ret = VIR_DRV_OPEN_ERROR;
-    int rflags = 0;
-    bool user;
-    bool autostart;
+    unsigned int rflags = 0;
     char *driver = NULL;
     remoteDriverTransport transport;
 
@@ -1270,15 +1266,11 @@ remoteConnectOpen(virConnectPtr conn,
     if (!(priv = remoteAllocPrivateData()))
         goto cleanup;
 
+
+    remoteGetURIDaemonInfo(conn->uri, transport, &rflags);
     if (flags & VIR_CONNECT_RO)
         rflags |= REMOTE_DRIVER_OPEN_RO;
 
-    remoteGetURIDaemonInfo(conn->uri, transport, &user, &autostart);
-    if (user)
-        rflags |= REMOTE_DRIVER_OPEN_USER;
-    if (autostart)
-        rflags |= REMOTE_DRIVER_OPEN_AUTOSTART;
-
     ret = doRemoteOpen(conn, priv, driver, transport, auth, conf, rflags);
     if (ret != VIR_DRV_OPEN_SUCCESS) {
         conn->privateData = NULL;
diff --git a/src/remote/remote_sockets.c b/src/remote/remote_sockets.c
index e9d865213f..06315fe9c0 100644
--- a/src/remote/remote_sockets.c
+++ b/src/remote/remote_sockets.c
@@ -101,13 +101,12 @@ remoteSplitURIScheme(virURI *uri,
 static char *
 remoteGetUNIXSocketHelper(remoteDriverTransport transport,
                           const char *sock_prefix,
-                          bool ro,
-                          bool session)
+                          unsigned int flags)
 {
     char *sockname = NULL;
     g_autofree char *userdir = NULL;
 
-    if (session) {
+    if (flags & REMOTE_DRIVER_OPEN_USER) {
         userdir = virGetUserRuntimeDirectory();
 
         sockname = g_strdup_printf("%s/%s-sock", userdir, sock_prefix);
@@ -120,13 +119,14 @@ remoteGetUNIXSocketHelper(remoteDriverTransport transport,
          */
         sockname = g_strdup_printf("%s/run/libvirt/%s-%s", LOCALSTATEDIR,
                                    sock_prefix,
-                                   ro ? "sock-ro" : "sock");
+                                   flags & REMOTE_DRIVER_OPEN_RO ?
+                                   "sock-ro" : "sock");
     }
 
     VIR_DEBUG("Built UNIX sockname=%s for transport=%s "
-              "prefix=%s ro=%d session=%d",
+              "prefix=%s flags=0x%x",
               sockname, remoteDriverTransportTypeToString(transport),
-              sock_prefix, ro, session);
+              sock_prefix, flags);
     return sockname;
 }
 
@@ -135,8 +135,7 @@ char *
 remoteGetUNIXSocket(remoteDriverTransport transport,
                     remoteDriverMode mode,
                     const char *driver,
-                    bool ro,
-                    bool session,
+                    unsigned int flags,
                     char **daemon)
 {
     char *sock_name = NULL;
@@ -145,10 +144,10 @@ remoteGetUNIXSocket(remoteDriverTransport transport,
     g_autofree char *direct_sock_name = NULL;
     g_autofree char *legacy_sock_name = NULL;
 
-    VIR_DEBUG("Choosing remote socket for transport=%s mode=%s driver=%s ro=%d session=%d",
+    VIR_DEBUG("Choosing remote socket for transport=%s mode=%s driver=%s flags=0x%x",
               remoteDriverTransportTypeToString(transport),
               remoteDriverModeTypeToString(mode),
-              driver, ro, session);
+              driver, flags);
 
     if (driver)
         direct_daemon = g_strdup_printf("virt%sd", driver);
@@ -156,9 +155,9 @@ remoteGetUNIXSocket(remoteDriverTransport transport,
     legacy_daemon = g_strdup("libvirtd");
 
     if (driver)
-        direct_sock_name = remoteGetUNIXSocketHelper(transport, direct_daemon, ro, session);
+        direct_sock_name = remoteGetUNIXSocketHelper(transport, direct_daemon, flags);
 
-    legacy_sock_name = remoteGetUNIXSocketHelper(transport, "libvirt", ro, session);
+    legacy_sock_name = remoteGetUNIXSocketHelper(transport, "libvirt", flags);
 
     if (mode == REMOTE_DRIVER_MODE_AUTO) {
         if (transport == REMOTE_DRIVER_TRANSPORT_UNIX) {
@@ -221,13 +220,11 @@ remoteGetUNIXSocket(remoteDriverTransport transport,
 void
 remoteGetURIDaemonInfo(virURI *uri,
                        remoteDriverTransport transport,
-                       bool *session,
-                       bool *autostart)
+                       unsigned int *flags)
 {
     const char *autostart_str = getenv("LIBVIRT_AUTOSTART");
 
-    *session = false;
-    *autostart = false;
+    *flags = 0;
 
     /*
      * User session daemon is used for
@@ -244,7 +241,7 @@ remoteGetURIDaemonInfo(virURI *uri,
          STRPREFIX(uri->scheme, "test+")) &&
         geteuid() > 0) {
         VIR_DEBUG("User session daemon required");
-        *session = true;
+        *flags |= REMOTE_DRIVER_OPEN_USER;
 
         /*
          * Furthermore if no servername is given,
@@ -256,7 +253,7 @@ remoteGetURIDaemonInfo(virURI *uri,
             (!autostart_str ||
              STRNEQ(autostart_str, "0"))) {
             VIR_DEBUG("Try daemon autostart");
-            *autostart = true;
+            *flags |= REMOTE_DRIVER_OPEN_AUTOSTART;
         }
     }
 
@@ -268,10 +265,10 @@ remoteGetURIDaemonInfo(virURI *uri,
         VIR_DEBUG("Auto-probe remote URI");
         if (geteuid() > 0) {
             VIR_DEBUG("Auto-spawn user daemon instance");
-            *session = true;
+            *flags |= REMOTE_DRIVER_OPEN_USER;
             if (!autostart_str ||
                 STRNEQ(autostart_str, "0"))
-                *autostart = true;
+                *flags |= REMOTE_DRIVER_OPEN_AUTOSTART;
         }
     }
 }
diff --git a/src/remote/remote_sockets.h b/src/remote/remote_sockets.h
index 749389700e..2331f81425 100644
--- a/src/remote/remote_sockets.h
+++ b/src/remote/remote_sockets.h
@@ -66,12 +66,10 @@ char *
 remoteGetUNIXSocket(remoteDriverTransport transport,
                     remoteDriverMode mode,
                     const char *driver,
-                    bool ro,
-                    bool session,
+                    unsigned int flags, /* remoteDriverOpenFlags */
                     char **daemon);
 
 void
 remoteGetURIDaemonInfo(virURI *uri,
                        remoteDriverTransport transport,
-                       bool *session,
-                       bool *autostart);
+                       unsigned int *flags); /* remoteDriverOpenFlags */
diff --git a/src/remote/remote_ssh_helper.c b/src/remote/remote_ssh_helper.c
index 7934e14509..7123fc6d00 100644
--- a/src/remote/remote_ssh_helper.c
+++ b/src/remote/remote_ssh_helper.c
@@ -355,8 +355,6 @@ int main(int argc, char **argv)
     g_autoptr(virURI) uri = NULL;
     g_autofree char *driver = NULL;
     remoteDriverTransport transport;
-    bool user = false;
-    bool autostart = false;
     gboolean version = false;
     gboolean readonly = false;
     g_autofree char *sock_path = NULL;
@@ -369,6 +367,7 @@ int main(int argc, char **argv)
         { "version", 'V', 0, G_OPTION_ARG_NONE, &version, "Display version information", NULL },
         { NULL, '\0', 0, 0, NULL, NULL, NULL }
     };
+    unsigned int flags;
 
     context = g_option_context_new("- libvirt socket proxy");
     g_option_context_add_main_entries(context, entries, PACKAGE);
@@ -422,16 +421,18 @@ int main(int argc, char **argv)
         exit(EXIT_FAILURE);
     }
 
-    remoteGetURIDaemonInfo(uri, transport, &user, &autostart);
+    remoteGetURIDaemonInfo(uri, transport, &flags);
+    if (readonly)
+        flags |= REMOTE_DRIVER_OPEN_RO;
 
     sock_path = remoteGetUNIXSocket(transport,
                                     REMOTE_DRIVER_MODE_AUTO,
                                     driver,
-                                    !!readonly,
-                                    user,
+                                    flags,
                                     &daemon_name);
 
-    if (virNetSocketNewConnectUNIX(sock_path, autostart, daemon_name, &sock) < 0) {
+    if (virNetSocketNewConnectUNIX(sock_path, flags & REMOTE_DRIVER_OPEN_AUTOSTART,
+                                   daemon_name, &sock) < 0) {
         g_printerr(_("%s: cannot connect to '%s': %s\n"),
                    argv[0], sock_path, virGetLastErrorMessage());
         exit(EXIT_FAILURE);
-- 
2.31.1




More information about the libvir-list mailing list