(long long) callerPid, (int) callerUid) < 0)
goto cleanup;
VIR_INFO("Bypass polkit auth for privileged client %s", ident);
- virNetServerClientSetAuth(client, VIR_NET_SERVER_SERVICE_AUTH_NONE);
- virNetServerTrackCompletedAuth(server);
+ virNetServerSetClientAuthenticated(server, client);
auth = VIR_NET_SERVER_SERVICE_AUTH_NONE;
VIR_FREE(ident);
}
if (!(clnt_identity = virNetServerClientGetIdentity(client)))
goto error;
- virNetServerClientSetAuth(client, VIR_NET_SERVER_SERVICE_AUTH_NONE);
- virNetServerTrackCompletedAuth(server);
+ virNetServerSetClientAuthenticated(server, client);
virNetServerClientSetSASLSession(client, priv->sasl);
virIdentitySetSASLUserName(clnt_identity, identity);
action, (long long) callerPid, callerUid);
ret->complete = 1;
- virNetServerClientSetAuth(client, VIR_NET_SERVER_SERVICE_AUTH_NONE);
- virNetServerTrackCompletedAuth(server);
+ virNetServerSetClientAuthenticated(server, client);
virMutexUnlock(&priv->lock);
return 0;
virNetServerNextClientID;
virNetServerPreExecRestart;
virNetServerProcessClients;
+virNetServerSetClientAuthenticated;
virNetServerStart;
-virNetServerTrackCompletedAuth;
-virNetServerTrackPendingAuth;
virNetServerUpdateServices;
virNetServerClientRemoteAddrStringURI;
virNetServerClientRemoveFilter;
virNetServerClientSendMessage;
-virNetServerClientSetAuth;
+virNetServerClientSetAuthLocked;
virNetServerClientSetCloseHook;
virNetServerClientSetDispatcher;
virNetServerClientSetReadonly;
#endif
+/**
+ * virNetServerSetClientAuthenticated:
+ * @srv: server must be unlocked
+ * @client: client must be unlocked
+ *
+ * Mark @client as authenticated and tracks on @srv that the
+ * authentication of this @client has been completed. Also it checks
+ * the limits of @srv.
+ */
+void
+virNetServerSetClientAuthenticated(virNetServerPtr srv,
+ virNetServerClientPtr client)
+{
+ virObjectLock(srv);
+ virObjectLock(client);
+ virNetServerClientSetAuthLocked(client, VIR_NET_SERVER_SERVICE_AUTH_NONE);
+ virNetServerTrackCompletedAuthLocked(srv);
+ virNetServerCheckLimits(srv);
+ virObjectUnlock(client);
+ virObjectUnlock(srv);
+}
+
+
static void
virNetServerUpdateServicesLocked(virNetServerPtr srv,
bool enabled)
return --srv->nclients_unauth;
}
-size_t virNetServerTrackPendingAuth(virNetServerPtr srv)
-{
- size_t ret;
- virObjectLock(srv);
- ret = virNetServerTrackPendingAuthLocked(srv);
- virObjectUnlock(srv);
- return ret;
-}
-
-size_t virNetServerTrackCompletedAuth(virNetServerPtr srv)
-{
- size_t ret;
- virObjectLock(srv);
- ret = virNetServerTrackCompletedAuthLocked(srv);
- virNetServerCheckLimits(srv);
- virObjectUnlock(srv);
- return ret;
-}
bool
virNetServerHasClients(virNetServerPtr srv)
virNetTLSContextPtr tls);
# endif
-size_t virNetServerTrackPendingAuth(virNetServerPtr srv);
-size_t virNetServerTrackCompletedAuth(virNetServerPtr srv);
int virNetServerAddClient(virNetServerPtr srv,
virNetServerClientPtr client);
bool virNetServerHasClients(virNetServerPtr srv);
void virNetServerProcessClients(virNetServerPtr srv);
+void virNetServerSetClientAuthenticated(virNetServerPtr srv, virNetServerClientPtr client);
void virNetServerUpdateServices(virNetServerPtr srv, bool enabled);
return auth;
}
-void virNetServerClientSetAuth(virNetServerClientPtr client, int auth)
+
+void
+virNetServerClientSetAuthLocked(virNetServerClientPtr client,
+ int auth)
{
- virObjectLock(client);
client->auth = auth;
- virObjectUnlock(client);
}
+
bool virNetServerClientGetReadonly(virNetServerClientPtr client)
{
bool readonly;
int filterID);
int virNetServerClientGetAuth(virNetServerClientPtr client);
-void virNetServerClientSetAuth(virNetServerClientPtr client, int auth);
+void virNetServerClientSetAuthLocked(virNetServerClientPtr client, int auth);
bool virNetServerClientGetReadonly(virNetServerClientPtr client);
void virNetServerClientSetReadonly(virNetServerClientPtr client, bool readonly);
unsigned long long virNetServerClientGetID(virNetServerClientPtr client);