From 42b06aa65d61cbcbae6f09ec2264b005ad8de5e8 Mon Sep 17 00:00:00 2001 From: Erik Skultety Date: Fri, 15 Apr 2016 00:25:04 +0200 Subject: [PATCH] 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 --- src/libvirt_remote.syms | 1 + src/rpc/virnetserverclient.c | 22 ++++++++++++++++++++++ src/rpc/virnetserverclient.h | 1 + 3 files changed, 24 insertions(+) diff --git a/src/libvirt_remote.syms b/src/libvirt_remote.syms index ea92043e80..963683d5c7 100644 --- a/src/libvirt_remote.syms +++ b/src/libvirt_remote.syms @@ -125,6 +125,7 @@ virNetServerClientGetIdentity; virNetServerClientGetPrivateData; virNetServerClientGetReadonly; virNetServerClientGetSELinuxContext; +virNetServerClientGetTransport; virNetServerClientGetUNIXIdentity; virNetServerClientImmediateClose; virNetServerClientInit; diff --git a/src/rpc/virnetserverclient.c b/src/rpc/virnetserverclient.c index a1543b9df4..a9d70e1738 100644 --- a/src/rpc/virnetserverclient.c +++ b/src/rpc/virnetserverclient.c @@ -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; +} diff --git a/src/rpc/virnetserverclient.h b/src/rpc/virnetserverclient.h index e68ef76f04..1318fa2410 100644 --- a/src/rpc/virnetserverclient.h +++ b/src/rpc/virnetserverclient.h @@ -145,5 +145,6 @@ int virNetServerClientSendMessage(virNetServerClientPtr client, bool virNetServerClientNeedAuth(virNetServerClientPtr client); +int virNetServerClientGetTransport(virNetServerClientPtr client); #endif /* __VIR_NET_SERVER_CLIENT_H__ */ -- GitLab