Add a opaque parameter to the RPC client init callback

The callback that is invoked when a new RPC client is
initialized does not have any opaque parameter. Add
one so that custom data can be passed into the callback

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrange 2012-03-15 18:14:51 +00:00
parent ccb9478500
commit c6b2d5d082
5 changed files with 15 additions and 7 deletions

View File

@ -1176,7 +1176,8 @@ int main(int argc, char **argv) {
config->keepalive_count, config->keepalive_count,
!!config->keepalive_required, !!config->keepalive_required,
config->mdns_adv ? config->mdns_name : NULL, config->mdns_adv ? config->mdns_name : NULL,
remoteClientInitHook))) { remoteClientInitHook,
NULL))) {
ret = VIR_DAEMON_ERR_INIT; ret = VIR_DAEMON_ERR_INIT;
goto cleanup; goto cleanup;
} }

View File

@ -640,7 +640,8 @@ static void remoteClientCloseFunc(virNetServerClientPtr client)
int remoteClientInitHook(virNetServerPtr srv ATTRIBUTE_UNUSED, int remoteClientInitHook(virNetServerPtr srv ATTRIBUTE_UNUSED,
virNetServerClientPtr client) virNetServerClientPtr client,
void *opaque ATTRIBUTE_UNUSED)
{ {
struct daemonClientPrivate *priv; struct daemonClientPrivate *priv;
int i; int i;

View File

@ -36,6 +36,7 @@ extern virNetServerProgramProc qemuProcs[];
extern size_t qemuNProcs; extern size_t qemuNProcs;
int remoteClientInitHook(virNetServerPtr srv, int remoteClientInitHook(virNetServerPtr srv,
virNetServerClientPtr client); virNetServerClientPtr client,
void *opaque);
#endif /* __LIBVIRTD_REMOTE_H__ */ #endif /* __LIBVIRTD_REMOTE_H__ */

View File

@ -112,6 +112,7 @@ struct _virNetServer {
void *autoShutdownOpaque; void *autoShutdownOpaque;
virNetServerClientInitHook clientInitHook; virNetServerClientInitHook clientInitHook;
void *clientInitOpaque;
}; };
@ -248,7 +249,7 @@ static int virNetServerDispatchNewClient(virNetServerServicePtr svc ATTRIBUTE_UN
goto error; goto error;
if (srv->clientInitHook && if (srv->clientInitHook &&
srv->clientInitHook(srv, client) < 0) srv->clientInitHook(srv, client, srv->clientInitOpaque) < 0)
goto error; goto error;
if (VIR_EXPAND_N(srv->clients, srv->nclients, 1) < 0) { if (VIR_EXPAND_N(srv->clients, srv->nclients, 1) < 0) {
@ -310,7 +311,8 @@ virNetServerPtr virNetServerNew(size_t min_workers,
unsigned int keepaliveCount, unsigned int keepaliveCount,
bool keepaliveRequired, bool keepaliveRequired,
const char *mdnsGroupName, const char *mdnsGroupName,
virNetServerClientInitHook clientInitHook) virNetServerClientInitHook clientInitHook,
void *opaque)
{ {
virNetServerPtr srv; virNetServerPtr srv;
struct sigaction sig_action; struct sigaction sig_action;
@ -334,6 +336,7 @@ virNetServerPtr virNetServerNew(size_t min_workers,
srv->keepaliveRequired = keepaliveRequired; srv->keepaliveRequired = keepaliveRequired;
srv->sigwrite = srv->sigread = -1; srv->sigwrite = srv->sigread = -1;
srv->clientInitHook = clientInitHook; srv->clientInitHook = clientInitHook;
srv->clientInitOpaque = opaque;
srv->privileged = geteuid() == 0 ? true : false; srv->privileged = geteuid() == 0 ? true : false;
if (mdnsGroupName && if (mdnsGroupName &&

View File

@ -32,7 +32,8 @@
# include "virnetserverservice.h" # include "virnetserverservice.h"
typedef int (*virNetServerClientInitHook)(virNetServerPtr srv, typedef int (*virNetServerClientInitHook)(virNetServerPtr srv,
virNetServerClientPtr client); virNetServerClientPtr client,
void *opaque);
virNetServerPtr virNetServerNew(size_t min_workers, virNetServerPtr virNetServerNew(size_t min_workers,
size_t max_workers, size_t max_workers,
@ -42,7 +43,8 @@ virNetServerPtr virNetServerNew(size_t min_workers,
unsigned int keepaliveCount, unsigned int keepaliveCount,
bool keepaliveRequired, bool keepaliveRequired,
const char *mdnsGroupName, const char *mdnsGroupName,
virNetServerClientInitHook clientInitHook); virNetServerClientInitHook clientInitHook,
void *opaque);
typedef int (*virNetServerAutoShutdownFunc)(virNetServerPtr srv, void *opaque); typedef int (*virNetServerAutoShutdownFunc)(virNetServerPtr srv, void *opaque);