rpc: virnetserverclient: Implement client connection transport retrieval

Although we document 6 types of transport that we support, internally we can
only differentiate between TCP, TLS, and UNIX transports only, since both SSH
and libssh2 transports, due to using netcat, behave in the exactly the same
way as a UNIX socket.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
Erik Skultety 2016-04-15 00:25:04 +02:00
parent 15500e9229
commit 42b06aa65d
3 changed files with 24 additions and 0 deletions

View File

@ -125,6 +125,7 @@ virNetServerClientGetIdentity;
virNetServerClientGetPrivateData;
virNetServerClientGetReadonly;
virNetServerClientGetSELinuxContext;
virNetServerClientGetTransport;
virNetServerClientGetUNIXIdentity;
virNetServerClientImmediateClose;
virNetServerClientInit;

View File

@ -1568,3 +1568,25 @@ virNetServerClientStartKeepAlive(virNetServerClientPtr client)
virObjectUnlock(client);
return ret;
}
int
virNetServerClientGetTransport(virNetServerClientPtr client)
{
int ret = -1;
virObjectLock(client);
if (client->sock && virNetSocketIsLocal(client->sock))
ret = VIR_CLIENT_TRANS_UNIX;
else
ret = VIR_CLIENT_TRANS_TCP;
#ifdef WITH_GNUTLS
if (client->tls)
ret = VIR_CLIENT_TRANS_TLS;
#endif
virObjectUnlock(client);
return ret;
}

View File

@ -145,5 +145,6 @@ int virNetServerClientSendMessage(virNetServerClientPtr client,
bool virNetServerClientNeedAuth(virNetServerClientPtr client);
int virNetServerClientGetTransport(virNetServerClientPtr client);
#endif /* __VIR_NET_SERVER_CLIENT_H__ */