diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c index 9c06344cf6..8c434a0ede 100644 --- a/daemon/libvirtd.c +++ b/daemon/libvirtd.c @@ -1176,7 +1176,8 @@ int main(int argc, char **argv) { config->keepalive_count, !!config->keepalive_required, config->mdns_adv ? config->mdns_name : NULL, - remoteClientInitHook))) { + remoteClientInitHook, + NULL))) { ret = VIR_DAEMON_ERR_INIT; goto cleanup; } diff --git a/daemon/remote.c b/daemon/remote.c index b8c2aab13b..095d854f59 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -640,7 +640,8 @@ static void remoteClientCloseFunc(virNetServerClientPtr client) int remoteClientInitHook(virNetServerPtr srv ATTRIBUTE_UNUSED, - virNetServerClientPtr client) + virNetServerClientPtr client, + void *opaque ATTRIBUTE_UNUSED) { struct daemonClientPrivate *priv; int i; diff --git a/daemon/remote.h b/daemon/remote.h index 5444e4786e..d3e1b2d462 100644 --- a/daemon/remote.h +++ b/daemon/remote.h @@ -36,6 +36,7 @@ extern virNetServerProgramProc qemuProcs[]; extern size_t qemuNProcs; int remoteClientInitHook(virNetServerPtr srv, - virNetServerClientPtr client); + virNetServerClientPtr client, + void *opaque); #endif /* __LIBVIRTD_REMOTE_H__ */ diff --git a/src/rpc/virnetserver.c b/src/rpc/virnetserver.c index 247ddd7585..358666d248 100644 --- a/src/rpc/virnetserver.c +++ b/src/rpc/virnetserver.c @@ -112,6 +112,7 @@ struct _virNetServer { void *autoShutdownOpaque; virNetServerClientInitHook clientInitHook; + void *clientInitOpaque; }; @@ -248,7 +249,7 @@ static int virNetServerDispatchNewClient(virNetServerServicePtr svc ATTRIBUTE_UN goto error; if (srv->clientInitHook && - srv->clientInitHook(srv, client) < 0) + srv->clientInitHook(srv, client, srv->clientInitOpaque) < 0) goto error; if (VIR_EXPAND_N(srv->clients, srv->nclients, 1) < 0) { @@ -310,7 +311,8 @@ virNetServerPtr virNetServerNew(size_t min_workers, unsigned int keepaliveCount, bool keepaliveRequired, const char *mdnsGroupName, - virNetServerClientInitHook clientInitHook) + virNetServerClientInitHook clientInitHook, + void *opaque) { virNetServerPtr srv; struct sigaction sig_action; @@ -334,6 +336,7 @@ virNetServerPtr virNetServerNew(size_t min_workers, srv->keepaliveRequired = keepaliveRequired; srv->sigwrite = srv->sigread = -1; srv->clientInitHook = clientInitHook; + srv->clientInitOpaque = opaque; srv->privileged = geteuid() == 0 ? true : false; if (mdnsGroupName && diff --git a/src/rpc/virnetserver.h b/src/rpc/virnetserver.h index 0ebe00e798..438f524110 100644 --- a/src/rpc/virnetserver.h +++ b/src/rpc/virnetserver.h @@ -32,7 +32,8 @@ # include "virnetserverservice.h" typedef int (*virNetServerClientInitHook)(virNetServerPtr srv, - virNetServerClientPtr client); + virNetServerClientPtr client, + void *opaque); virNetServerPtr virNetServerNew(size_t min_workers, size_t max_workers, @@ -42,7 +43,8 @@ virNetServerPtr virNetServerNew(size_t min_workers, unsigned int keepaliveCount, bool keepaliveRequired, const char *mdnsGroupName, - virNetServerClientInitHook clientInitHook); + virNetServerClientInitHook clientInitHook, + void *opaque); typedef int (*virNetServerAutoShutdownFunc)(virNetServerPtr srv, void *opaque);