We leave all the hard work of setting up the socket to qemu. This will cause all of the TCP setsockopt calls to return ENOSUP but that is okay. --- server/reds.c | 21 +++++++++++++++++++++ server/spice-server.syms | 1 + server/spice.h | 1 + 3 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/server/reds.c b/server/reds.c index 5fc03ea..7f9ffcc 100644 --- a/server/reds.c +++ b/server/reds.c @@ -94,6 +94,7 @@ static SpiceMigrateInstance *migration_interface = NULL; static int spice_port = -1; static int spice_secure_port = -1; +static int spice_unix_socket = -1; static char spice_addr[256]; static int spice_family = PF_UNSPEC; static char *default_renderer = "sw"; @@ -2995,6 +2996,19 @@ static int reds_init_net(void) red_error("set fd handle failed"); } } + + if (spice_unix_socket != -1 ) { + reds->listen_socket = spice_unix_socket; + if (-1 == reds->listen_socket) { + return -1; + } + reds->listen_watch = core->watch_add(reds->listen_socket, + SPICE_WATCH_EVENT_READ, + reds_accept, NULL); + if (reds->listen_watch == NULL) { + red_error("set fd handle failed"); + } + } return 0; } @@ -3787,6 +3801,13 @@ SPICE_GNUC_VISIBLE void spice_server_set_addr(SpiceServer *s, const char *addr, } } +SPICE_GNUC_VISIBLE int spice_server_set_unix_socket(SpiceServer *s, int unix_socket) +{ + ASSERT(reds == s); + spice_unix_socket = unix_socket; + return 0; +} + SPICE_GNUC_VISIBLE int spice_server_set_noauth(SpiceServer *s) { ASSERT(reds == s); diff --git a/server/spice-server.syms b/server/spice-server.syms index 272548e..51c6ffa 100644 --- a/server/spice-server.syms +++ b/server/spice-server.syms @@ -106,4 +106,5 @@ SPICE_SERVER_0.10.2 { global: spice_server_set_name; spice_server_set_uuid; + spice_server_set_unix_socket; } SPICE_SERVER_0.10.1; diff --git a/server/spice.h b/server/spice.h index 151b3db..7ace03b 100644 --- a/server/spice.h +++ b/server/spice.h @@ -421,6 +421,7 @@ int spice_server_set_compat_version(SpiceServer *s, spice_compat_version_t version); int spice_server_set_port(SpiceServer *s, int port); void spice_server_set_addr(SpiceServer *s, const char *addr, int flags); +int spice_server_set_unix_socket(SpiceServer *s, int unix_socket); int spice_server_set_noauth(SpiceServer *s); int spice_server_set_sasl(SpiceServer *s, int enabled); int spice_server_set_sasl_appname(SpiceServer *s, const char *appname); -- 1.7.7.6 _______________________________________________ Spice-devel mailing list Spice-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/spice-devel