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@xxxxxxxxxx> --- 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list