On 29.04.2016 15:45, Erik Skultety wrote: > 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@xxxxxxxxxx> > --- > src/rpc/virnetserverclient.c | 26 ++++++++++++++++++++++++++ > src/rpc/virnetserverclient.h | 3 +++ > 2 files changed, 29 insertions(+) > > diff --git a/src/rpc/virnetserverclient.c b/src/rpc/virnetserverclient.c > index 396b0cc..ef1b568 100644 > --- a/src/rpc/virnetserverclient.c > +++ b/src/rpc/virnetserverclient.c > @@ -1612,3 +1612,29 @@ 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; > + } > + > + *identity = NULL; > + if (client->identity) > + *identity = virObjectRef(client->identity); Should we drop this if() and therefore set *identity to NULL if there's none? I guess it's better to be safe than sorry. Moreover, if we don't do that and return 0 it's hard for callers of this function to determine if this argument has been updated or not. In general I think that function should either update all args or none. > + > + ret = 0; > + cleanup: > + virObjectUnlock(client); > + return ret; > +} > diff --git a/src/rpc/virnetserverclient.h b/src/rpc/virnetserverclient.h > index b576fde..2fbf60c 100644 > --- a/src/rpc/virnetserverclient.h > +++ b/src/rpc/virnetserverclient.h > @@ -148,5 +148,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__ */ > Don't forget to export this symbol in src/libvirt_remote.syms too. Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list