[libvirt] [PATCH 03/21] server: Store server name in server object

Martin Kletzander mkletzan at redhat.com
Thu Mar 10 04:53:52 UTC 2016


At first I did not want to do this, but after trying to implement some
newer feaures in the admin API I realized we need that to make our lives
easier.  On the other hand they are not saved redundantly and the
virNetServer objects are still kept in a hash table.

Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
---
 daemon/libvirtd.c         |  6 ++++--
 src/locking/lock_daemon.c |  3 ++-
 src/logging/log_daemon.c  |  3 ++-
 src/lxc/lxc_controller.c  |  3 ++-
 src/rpc/virnetdaemon.c    |  1 +
 src/rpc/virnetserver.c    | 20 ++++++++++++++++++--
 src/rpc/virnetserver.h    |  6 +++++-
 tests/virnetdaemontest.c  |  8 +++++---
 8 files changed, 39 insertions(+), 11 deletions(-)

diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
index d1b98c9c3d02..beddec1bb852 100644
--- a/daemon/libvirtd.c
+++ b/daemon/libvirtd.c
@@ -1382,7 +1382,8 @@ int main(int argc, char **argv) {
         goto cleanup;
     }

-    if (!(srv = virNetServerNew(config->min_workers,
+    if (!(srv = virNetServerNew("libvirtd",
+                                config->min_workers,
                                 config->max_workers,
                                 config->prio_workers,
                                 config->max_clients,
@@ -1456,7 +1457,8 @@ int main(int argc, char **argv) {
         goto cleanup;
     }

-    if (!(srvAdm = virNetServerNew(config->admin_min_workers,
+    if (!(srvAdm = virNetServerNew("admin",
+                                   config->admin_min_workers,
                                    config->admin_max_workers,
                                    0,
                                    config->admin_max_clients,
diff --git a/src/locking/lock_daemon.c b/src/locking/lock_daemon.c
index cd70aa94d7a2..c89b842f0faf 100644
--- a/src/locking/lock_daemon.c
+++ b/src/locking/lock_daemon.c
@@ -160,7 +160,8 @@ virLockDaemonNew(virLockDaemonConfigPtr config, bool privileged)
         return NULL;
     }

-    if (!(srv = virNetServerNew(1, 1, 0, config->max_clients,
+    if (!(srv = virNetServerNew("virtlockd",
+                                1, 1, 0, config->max_clients,
                                 config->max_clients, -1, 0,
                                 NULL,
                                 virLockDaemonClientNew,
diff --git a/src/logging/log_daemon.c b/src/logging/log_daemon.c
index 07a03c24199a..866e8a85f4fa 100644
--- a/src/logging/log_daemon.c
+++ b/src/logging/log_daemon.c
@@ -150,7 +150,8 @@ virLogDaemonNew(virLogDaemonConfigPtr config, bool privileged)
         return NULL;
     }

-    if (!(logd->srv = virNetServerNew(1, 1, 0, config->max_clients,
+    if (!(logd->srv = virNetServerNew("virtlogd",
+                                      1, 1, 0, config->max_clients,
                                       config->max_clients, -1, 0,
                                       NULL,
                                       virLogDaemonClientNew,
diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
index 76bef82e709c..21cf71fa08a5 100644
--- a/src/lxc/lxc_controller.c
+++ b/src/lxc/lxc_controller.c
@@ -928,7 +928,8 @@ static int virLXCControllerSetupServer(virLXCControllerPtr ctrl)
                     LXC_STATE_DIR, ctrl->name) < 0)
         return -1;

-    if (!(srv = virNetServerNew(0, 0, 0, 1,
+    if (!(srv = virNetServerNew("LXC",
+                                0, 0, 0, 1,
                                 0, -1, 0,
                                 NULL,
                                 virLXCControllerClientPrivateNew,
diff --git a/src/rpc/virnetdaemon.c b/src/rpc/virnetdaemon.c
index 298fbf4ab086..7ae06dd38007 100644
--- a/src/rpc/virnetdaemon.c
+++ b/src/rpc/virnetdaemon.c
@@ -276,6 +276,7 @@ virNetDaemonAddServerPostExec(virNetDaemonPtr dmn,
     }

     srv = virNetServerNewPostExecRestart(object,
+                                         serverName,
                                          clientPrivNew,
                                          clientPrivNewPostExecRestart,
                                          clientPrivPreExecRestart,
diff --git a/src/rpc/virnetserver.c b/src/rpc/virnetserver.c
index 547e52e409c0..cf48e50603e4 100644
--- a/src/rpc/virnetserver.c
+++ b/src/rpc/virnetserver.c
@@ -49,6 +49,8 @@ struct _virNetServerJob {
 struct _virNetServer {
     virObjectLockable parent;

+    char *name;
+
     virThreadPoolPtr workers;

     char *mdnsGroupName;
@@ -304,7 +306,8 @@ static int virNetServerDispatchNewClient(virNetServerServicePtr svc,
 }


-virNetServerPtr virNetServerNew(size_t min_workers,
+virNetServerPtr virNetServerNew(const char *name,
+                                size_t min_workers,
                                 size_t max_workers,
                                 size_t priority_workers,
                                 size_t max_clients,
@@ -332,6 +335,9 @@ virNetServerPtr virNetServerNew(size_t min_workers,
                                           srv)))
         goto error;

+    if (VIR_STRDUP(srv->name, name) < 0)
+        goto error;
+
     srv->nclients_max = max_clients;
     srv->nclients_unauth_max = max_anonymous_clients;
     srv->keepaliveInterval = keepaliveInterval;
@@ -359,6 +365,7 @@ virNetServerPtr virNetServerNew(size_t min_workers,


 virNetServerPtr virNetServerNewPostExecRestart(virJSONValuePtr object,
+                                               const char *name,
                                                virNetServerClientPrivNew clientPrivNew,
                                                virNetServerClientPrivNewPostExecRestart clientPrivNewPostExecRestart,
                                                virNetServerClientPrivPreExecRestart clientPrivPreExecRestart,
@@ -427,7 +434,8 @@ virNetServerPtr virNetServerNewPostExecRestart(virJSONValuePtr object,
         goto error;
     }

-    if (!(srv = virNetServerNew(min_workers, max_workers,
+    if (!(srv = virNetServerNew(name,
+                                min_workers, max_workers,
                                 priority_workers, max_clients,
                                 max_anonymous_clients,
                                 keepaliveInterval, keepaliveCount,
@@ -734,6 +742,8 @@ void virNetServerDispose(void *obj)
     virNetServerPtr srv = obj;
     size_t i;

+    VIR_FREE(srv->name);
+
     for (i = 0; i < srv->nservices; i++)
         virNetServerServiceToggle(srv->services[i], false);

@@ -861,3 +871,9 @@ virNetServerStart(virNetServerPtr srv)

     return virNetServerMDNSStart(srv->mdns);
 }
+
+const char *
+virNetServerGetName(virNetServerPtr srv)
+{
+    return srv->name;
+}
diff --git a/src/rpc/virnetserver.h b/src/rpc/virnetserver.h
index 89d8db9b9ee4..aa244401a27f 100644
--- a/src/rpc/virnetserver.h
+++ b/src/rpc/virnetserver.h
@@ -34,7 +34,8 @@
 # include "virjson.h"


-virNetServerPtr virNetServerNew(size_t min_workers,
+virNetServerPtr virNetServerNew(const char *name,
+                                size_t min_workers,
                                 size_t max_workers,
                                 size_t priority_workers,
                                 size_t max_clients,
@@ -48,6 +49,7 @@ virNetServerPtr virNetServerNew(size_t min_workers,
                                 void *clientPrivOpaque);

 virNetServerPtr virNetServerNewPostExecRestart(virJSONValuePtr object,
+                                               const char *name,
                                                virNetServerClientPrivNew clientPrivNew,
                                                virNetServerClientPrivNewPostExecRestart clientPrivNewPostExecRestart,
                                                virNetServerClientPrivPreExecRestart clientPrivPreExecRestart,
@@ -85,4 +87,6 @@ void virNetServerUpdateServices(virNetServerPtr srv, bool enabled);

 int virNetServerStart(virNetServerPtr srv);

+const char *virNetServerGetName(virNetServerPtr srv);
+
 #endif /* __VIR_NET_SERVER_H__ */
diff --git a/tests/virnetdaemontest.c b/tests/virnetdaemontest.c
index 2f855fdde2f2..443a406b77f2 100644
--- a/tests/virnetdaemontest.c
+++ b/tests/virnetdaemontest.c
@@ -28,7 +28,7 @@

 #if defined(HAVE_SOCKETPAIR) && defined(WITH_YAJL)
 static virNetServerPtr
-testCreateServer(const char *host, int family)
+testCreateServer(const char *server_name, const char *host, int family)
 {
     virNetServerPtr srv = NULL;
     virNetServerServicePtr svc1 = NULL, svc2 = NULL;
@@ -49,7 +49,8 @@ testCreateServer(const char *host, int family)
         goto cleanup;
     }

-    if (!(srv = virNetServerNew(10, 50, 5, 100, 10,
+    if (!(srv = virNetServerNew(server_name,
+                                10, 50, 5, 100, 10,
                                 120, 5,
                                 mdns_group,
                                 NULL,
@@ -155,7 +156,8 @@ static char *testGenerateJSON(const char *server_name)
     if (!has_ipv4 && !has_ipv6)
         return NULL;

-    if (!(srv = testCreateServer(has_ipv4 ? "127.0.0.1" : "::1",
+    if (!(srv = testCreateServer(server_name,
+                                 has_ipv4 ? "127.0.0.1" : "::1",
                                  has_ipv4 ? AF_INET : AF_INET6)))
         goto cleanup;

-- 
2.7.2




More information about the libvir-list mailing list