提交 f1d82519 编写于 作者: M Marc Hartmayer 提交者: John Ferlan

rpc: Introduce virNetServerSetClientAuthenticated

Combine virNetServerClientSetAuth(client,
VIR_NET_SERVER_SERVICE_AUTH_NONE) and virNetServerTrackCompletedAuth
into one new function named virNetServerSetClientAuthenticated.

After using this new function the function
virNetServerTrackCompletedAuth was superfluous and is therefore
removed. In addition, it is not very common that a
'{{function}}' (virNetServerTrackCompletedAuth) does more than just
the locking compared to
'{{function}}Locked' (virNetServerTrackCompletedAuthLocked).

virNetServerTrackPendingAuth was already superfluous and therefore
it's also removed.
Signed-off-by: NMarc Hartmayer <mhartmay@linux.vnet.ibm.com>
Reviewed-by: NBoris Fiuczynski <fiuczy@linux.vnet.ibm.com>
Reviewed-by: NStefan Zimmermann <stzi@linux.vnet.ibm.com>
Reviewed-by: NJohn Ferlan <jferlan@redhat.com>
上级 0eaa59dc
...@@ -3268,8 +3268,7 @@ remoteDispatchAuthList(virNetServerPtr server, ...@@ -3268,8 +3268,7 @@ remoteDispatchAuthList(virNetServerPtr server,
(long long) callerPid, (int) callerUid) < 0) (long long) callerPid, (int) callerUid) < 0)
goto cleanup; goto cleanup;
VIR_INFO("Bypass polkit auth for privileged client %s", ident); VIR_INFO("Bypass polkit auth for privileged client %s", ident);
virNetServerClientSetAuth(client, VIR_NET_SERVER_SERVICE_AUTH_NONE); virNetServerSetClientAuthenticated(server, client);
virNetServerTrackCompletedAuth(server);
auth = VIR_NET_SERVER_SERVICE_AUTH_NONE; auth = VIR_NET_SERVER_SERVICE_AUTH_NONE;
VIR_FREE(ident); VIR_FREE(ident);
} }
...@@ -3412,8 +3411,7 @@ remoteSASLFinish(virNetServerPtr server, ...@@ -3412,8 +3411,7 @@ remoteSASLFinish(virNetServerPtr server,
if (!(clnt_identity = virNetServerClientGetIdentity(client))) if (!(clnt_identity = virNetServerClientGetIdentity(client)))
goto error; goto error;
virNetServerClientSetAuth(client, VIR_NET_SERVER_SERVICE_AUTH_NONE); virNetServerSetClientAuthenticated(server, client);
virNetServerTrackCompletedAuth(server);
virNetServerClientSetSASLSession(client, priv->sasl); virNetServerClientSetSASLSession(client, priv->sasl);
virIdentitySetSASLUserName(clnt_identity, identity); virIdentitySetSASLUserName(clnt_identity, identity);
...@@ -3736,8 +3734,7 @@ remoteDispatchAuthPolkit(virNetServerPtr server, ...@@ -3736,8 +3734,7 @@ remoteDispatchAuthPolkit(virNetServerPtr server,
action, (long long) callerPid, callerUid); action, (long long) callerPid, callerUid);
ret->complete = 1; ret->complete = 1;
virNetServerClientSetAuth(client, VIR_NET_SERVER_SERVICE_AUTH_NONE); virNetServerSetClientAuthenticated(server, client);
virNetServerTrackCompletedAuth(server);
virMutexUnlock(&priv->lock); virMutexUnlock(&priv->lock);
return 0; return 0;
......
...@@ -116,9 +116,8 @@ virNetServerNewPostExecRestart; ...@@ -116,9 +116,8 @@ virNetServerNewPostExecRestart;
virNetServerNextClientID; virNetServerNextClientID;
virNetServerPreExecRestart; virNetServerPreExecRestart;
virNetServerProcessClients; virNetServerProcessClients;
virNetServerSetClientAuthenticated;
virNetServerStart; virNetServerStart;
virNetServerTrackCompletedAuth;
virNetServerTrackPendingAuth;
virNetServerUpdateServices; virNetServerUpdateServices;
...@@ -152,7 +151,7 @@ virNetServerClientRemoteAddrStringSASL; ...@@ -152,7 +151,7 @@ virNetServerClientRemoteAddrStringSASL;
virNetServerClientRemoteAddrStringURI; virNetServerClientRemoteAddrStringURI;
virNetServerClientRemoveFilter; virNetServerClientRemoveFilter;
virNetServerClientSendMessage; virNetServerClientSendMessage;
virNetServerClientSetAuth; virNetServerClientSetAuthLocked;
virNetServerClientSetCloseHook; virNetServerClientSetCloseHook;
virNetServerClientSetDispatcher; virNetServerClientSetDispatcher;
virNetServerClientSetReadonly; virNetServerClientSetReadonly;
......
...@@ -737,6 +737,29 @@ int virNetServerSetTLSContext(virNetServerPtr srv, ...@@ -737,6 +737,29 @@ int virNetServerSetTLSContext(virNetServerPtr srv,
#endif #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 static void
virNetServerUpdateServicesLocked(virNetServerPtr srv, virNetServerUpdateServicesLocked(virNetServerPtr srv,
bool enabled) bool enabled)
...@@ -814,24 +837,6 @@ virNetServerTrackCompletedAuthLocked(virNetServerPtr srv) ...@@ -814,24 +837,6 @@ virNetServerTrackCompletedAuthLocked(virNetServerPtr srv)
return --srv->nclients_unauth; 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 bool
virNetServerHasClients(virNetServerPtr srv) virNetServerHasClients(virNetServerPtr srv)
......
...@@ -73,13 +73,12 @@ int virNetServerSetTLSContext(virNetServerPtr srv, ...@@ -73,13 +73,12 @@ int virNetServerSetTLSContext(virNetServerPtr srv,
virNetTLSContextPtr tls); virNetTLSContextPtr tls);
# endif # endif
size_t virNetServerTrackPendingAuth(virNetServerPtr srv);
size_t virNetServerTrackCompletedAuth(virNetServerPtr srv);
int virNetServerAddClient(virNetServerPtr srv, int virNetServerAddClient(virNetServerPtr srv,
virNetServerClientPtr client); virNetServerClientPtr client);
bool virNetServerHasClients(virNetServerPtr srv); bool virNetServerHasClients(virNetServerPtr srv);
void virNetServerProcessClients(virNetServerPtr srv); void virNetServerProcessClients(virNetServerPtr srv);
void virNetServerSetClientAuthenticated(virNetServerPtr srv, virNetServerClientPtr client);
void virNetServerUpdateServices(virNetServerPtr srv, bool enabled); void virNetServerUpdateServices(virNetServerPtr srv, bool enabled);
......
...@@ -639,13 +639,15 @@ int virNetServerClientGetAuth(virNetServerClientPtr client) ...@@ -639,13 +639,15 @@ int virNetServerClientGetAuth(virNetServerClientPtr client)
return auth; return auth;
} }
void virNetServerClientSetAuth(virNetServerClientPtr client, int auth)
void
virNetServerClientSetAuthLocked(virNetServerClientPtr client,
int auth)
{ {
virObjectLock(client);
client->auth = auth; client->auth = auth;
virObjectUnlock(client);
} }
bool virNetServerClientGetReadonly(virNetServerClientPtr client) bool virNetServerClientGetReadonly(virNetServerClientPtr client)
{ {
bool readonly; bool readonly;
......
...@@ -79,7 +79,7 @@ void virNetServerClientRemoveFilter(virNetServerClientPtr client, ...@@ -79,7 +79,7 @@ void virNetServerClientRemoveFilter(virNetServerClientPtr client,
int filterID); int filterID);
int virNetServerClientGetAuth(virNetServerClientPtr client); int virNetServerClientGetAuth(virNetServerClientPtr client);
void virNetServerClientSetAuth(virNetServerClientPtr client, int auth); void virNetServerClientSetAuthLocked(virNetServerClientPtr client, int auth);
bool virNetServerClientGetReadonly(virNetServerClientPtr client); bool virNetServerClientGetReadonly(virNetServerClientPtr client);
void virNetServerClientSetReadonly(virNetServerClientPtr client, bool readonly); void virNetServerClientSetReadonly(virNetServerClientPtr client, bool readonly);
unsigned long long virNetServerClientGetID(virNetServerClientPtr client); unsigned long long virNetServerClientGetID(virNetServerClientPtr client);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册