]> xenbits.xensource.com Git - libvirt.git/commitdiff
virnetserverclient: Add an internal method to retrieve client's identity
authorErik Skultety <eskultet@redhat.com>
Fri, 22 Apr 2016 11:08:10 +0000 (13:08 +0200)
committerErik Skultety <eskultet@redhat.com>
Tue, 3 May 2016 13:52:50 +0000 (15:52 +0200)
This method just aggregates various client object attributes, like socket
address, connection type (RO/RW), and some TCP/TLS/UNIX identity in an atomic
manner.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
src/libvirt_remote.syms
src/rpc/virnetserverclient.c
src/rpc/virnetserverclient.h

index 963683d5c7b44eefc33d2d519c952df221d00a18..afcb2b75567e282738934f01ca19fccd350c05ef 100644 (file)
@@ -122,6 +122,7 @@ virNetServerClientDelayedClose;
 virNetServerClientGetAuth;
 virNetServerClientGetFD;
 virNetServerClientGetIdentity;
+virNetServerClientGetInfo;
 virNetServerClientGetPrivateData;
 virNetServerClientGetReadonly;
 virNetServerClientGetSELinuxContext;
index 396b0cc27483d4e663a81c45170f996f48e79391..d38f42140d5b0c5d4255fadefbce457c7a4bcc00 100644 (file)
@@ -1612,3 +1612,33 @@ virNetServerClientGetTransport(virNetServerClientPtr client)
 
     return ret;
 }
+
+int
+virNetServerClientGetInfo(virNetServerClientPtr client,
+                          bool *readonly, const char **sock_addr,
+                          virIdentityPtr *identity)
+{
+    int ret = -1;
+
+    virObjectLock(client);
+    *readonly = client->readonly;
+
+    if (!(*sock_addr = virNetServerClientRemoteAddrString(client))) {
+        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                       _("No network socket associated with client"));
+        goto cleanup;
+    }
+
+    if (!client->identity) {
+        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                       _("No identity information available for client"));
+        goto cleanup;
+    }
+
+    *identity = virObjectRef(client->identity);
+
+    ret = 0;
+ cleanup:
+    virObjectUnlock(client);
+    return ret;
+}
index 22daf502492acf326265a4967a4663ba2d2537b3..594803b4e41c19511f84bde21b46556d510ea1e7 100644 (file)
@@ -149,5 +149,8 @@ int virNetServerClientSendMessage(virNetServerClientPtr client,
 bool virNetServerClientNeedAuth(virNetServerClientPtr client);
 
 int virNetServerClientGetTransport(virNetServerClientPtr client);
+int virNetServerClientGetInfo(virNetServerClientPtr client,
+                              bool *readonly, const char **sock_addr,
+                              virIdentityPtr *identity);
 
 #endif /* __VIR_NET_SERVER_CLIENT_H__ */