static int adminDispatchClientGetInfo(virNetServerPtr server ATTRIBUTE_UNUSED, virNetServerClientPtr client, virNetMessagePtr msg ATTRIBUTE_UNUSED, virNetMessageErrorPtr rerr, struct admin_client_get_info_args *args, struct admin_client_get_info_ret *ret) { int rv = -1; virNetServerPtr srv = NULL; virNetServerClientPtr clnt = NULL; virTypedParameterPtr params = NULL; int nparams = 0; struct daemonAdmClientPrivate *priv = virNetServerClientGetPrivateData(client); if (!(srv = virNetDaemonGetServer(priv->dmn, args->clnt.srv.name))) { virReportError(VIR_ERR_NO_SERVER, _("no server with matching name '%s' found"), args->clnt.srv.name); goto cleanup; } if (!(clnt = virNetServerGetClient(srv, args->clnt.id))) { virReportError(VIR_ERR_NO_CLIENT, _("no client with matching id '%llu' found"), (unsigned long long) args->clnt.id); goto cleanup; } if (adminClientGetInfo(clnt, ¶ms, &nparams, args->flags) < 0) goto cleanup; if (nparams > ADMIN_CLIENT_INFO_PARAMETERS_MAX) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Number of client info parameters %d exceeds max " "allowed limit: %d"), nparams, ADMIN_CLIENT_INFO_PARAMETERS_MAX); goto cleanup; } if (virTypedParamsSerialize(params, nparams, (virTypedParameterRemotePtr *) &ret->params.params_val, &ret->params.params_len, VIR_TYPED_PARAM_STRING_OKAY) < 0) goto cleanup; rv = 0; cleanup: if (rv < 0) virNetMessageSaveError(rerr); virTypedParamsFree(params, nparams); virObjectUnref(clnt); virObjectUnref(srv); return rv; }
virNetServerClientPtr adminServerLookupClient(virNetServerPtr srv, unsigned long long id, unsigned int flags) { virCheckFlags(0, NULL); return virNetServerGetClient(srv, id); }
static virNetServerClientPtr get_nonnull_client(virNetServerPtr srv, admin_nonnull_client clnt) { return virNetServerGetClient(srv, clnt.id); }