admin: Introduce listing clients

Finally add public method to retrieve the list of currently connected clients
to a given server.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
Erik Skultety
2016-05-03 10:04:54 +02:00
parent 42b06aa65d
commit ed978fa2bc
10 changed files with 129 additions and 1 deletions
+15
View File
@@ -81,6 +81,12 @@ remoteAdmClientInitHook(virNetServerClientPtr client ATTRIBUTE_UNUSED,
/* Helpers */
static virNetServerPtr
get_nonnull_server(virNetDaemonPtr dmn, admin_nonnull_server srv)
{
return virNetDaemonGetServer(dmn, srv.name);
}
static void
make_nonnull_server(admin_nonnull_server *srv_dst,
virNetServerPtr srv_src)
@@ -88,6 +94,15 @@ make_nonnull_server(admin_nonnull_server *srv_dst,
ignore_value(VIR_STRDUP_QUIET(srv_dst->name, virNetServerGetName(srv_src)));
}
static void
make_nonnull_client(admin_nonnull_client *clt_dst,
virNetServerClientPtr clt_src)
{
clt_dst->id = virNetServerClientGetID(clt_src);
clt_dst->timestamp = virNetServerClientGetTimestamp(clt_src);
clt_dst->transport = virNetServerClientGetTransport(clt_src);
}
/* Functions */
static int
adminDispatchConnectOpen(virNetServerPtr server ATTRIBUTE_UNUSED,
+23
View File
@@ -178,3 +178,26 @@ adminServerSetThreadPoolParameters(virNetServerPtr srv,
return 0;
}
int
adminServerListClients(virNetServerPtr srv,
virNetServerClientPtr **clients,
unsigned int flags)
{
int ret = -1;
virNetServerClientPtr *clts;
virCheckFlags(0, -1);
if ((ret = virNetServerGetClients(srv, &clts)) < 0)
goto cleanup;
if (clients) {
*clients = clts;
clts = NULL;
}
cleanup:
virObjectListFreeCount(clts, ret);
return ret;
}
+4
View File
@@ -46,4 +46,8 @@ adminServerSetThreadPoolParameters(virNetServerPtr srv,
int nparams,
unsigned int flags);
int adminServerListClients(virNetServerPtr srv,
virNetServerClientPtr **clients,
unsigned int flags);
#endif /* __LIBVIRTD_ADMIN_SERVER_H__ */