aboutsummaryrefslogtreecommitdiff
path: root/ui/vnc.c
diff options
context:
space:
mode:
Diffstat (limited to 'ui/vnc.c')
-rw-r--r--ui/vnc.c138
1 files changed, 68 insertions, 70 deletions
diff --git a/ui/vnc.c b/ui/vnc.c
index 5090a2562f..9c4edcdbf5 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -108,31 +108,31 @@ static void vnc_set_share_mode(VncState *vs, VncShareMode mode)
}
-static void vnc_init_basic_info(SocketAddressLegacy *addr,
+static void vnc_init_basic_info(SocketAddress *addr,
VncBasicInfo *info,
Error **errp)
{
switch (addr->type) {
- case SOCKET_ADDRESS_LEGACY_KIND_INET:
- info->host = g_strdup(addr->u.inet.data->host);
- info->service = g_strdup(addr->u.inet.data->port);
- if (addr->u.inet.data->ipv6) {
+ case SOCKET_ADDRESS_TYPE_INET:
+ info->host = g_strdup(addr->u.inet.host);
+ info->service = g_strdup(addr->u.inet.port);
+ if (addr->u.inet.ipv6) {
info->family = NETWORK_ADDRESS_FAMILY_IPV6;
} else {
info->family = NETWORK_ADDRESS_FAMILY_IPV4;
}
break;
- case SOCKET_ADDRESS_LEGACY_KIND_UNIX:
+ case SOCKET_ADDRESS_TYPE_UNIX:
info->host = g_strdup("");
- info->service = g_strdup(addr->u.q_unix.data->path);
+ info->service = g_strdup(addr->u.q_unix.path);
info->family = NETWORK_ADDRESS_FAMILY_UNIX;
break;
- case SOCKET_ADDRESS_LEGACY_KIND_VSOCK:
- case SOCKET_ADDRESS_LEGACY_KIND_FD:
+ case SOCKET_ADDRESS_TYPE_VSOCK:
+ case SOCKET_ADDRESS_TYPE_FD:
error_setg(errp, "Unsupported socket address type %s",
- SocketAddressLegacyKind_lookup[addr->type]);
+ SocketAddressType_lookup[addr->type]);
break;
default:
abort();
@@ -145,7 +145,7 @@ static void vnc_init_basic_info_from_server_addr(QIOChannelSocket *ioc,
VncBasicInfo *info,
Error **errp)
{
- SocketAddressLegacy *addr = NULL;
+ SocketAddress *addr = NULL;
if (!ioc) {
error_setg(errp, "No listener socket available");
@@ -158,14 +158,14 @@ static void vnc_init_basic_info_from_server_addr(QIOChannelSocket *ioc,
}
vnc_init_basic_info(addr, info, errp);
- qapi_free_SocketAddressLegacy(addr);
+ qapi_free_SocketAddress(addr);
}
static void vnc_init_basic_info_from_remote_addr(QIOChannelSocket *ioc,
VncBasicInfo *info,
Error **errp)
{
- SocketAddressLegacy *addr = NULL;
+ SocketAddress *addr = NULL;
addr = qio_channel_socket_get_remote_address(ioc, errp);
if (!addr) {
@@ -173,7 +173,7 @@ static void vnc_init_basic_info_from_remote_addr(QIOChannelSocket *ioc,
}
vnc_init_basic_info(addr, info, errp);
- qapi_free_SocketAddressLegacy(addr);
+ qapi_free_SocketAddress(addr);
}
static const char *vnc_auth_name(VncDisplay *vd) {
@@ -377,7 +377,7 @@ VncInfo *qmp_query_vnc(Error **errp)
{
VncInfo *info = g_malloc0(sizeof(*info));
VncDisplay *vd = vnc_display_find(NULL);
- SocketAddressLegacy *addr = NULL;
+ SocketAddress *addr = NULL;
if (vd == NULL || !vd->nlsock) {
info->enabled = false;
@@ -398,26 +398,26 @@ VncInfo *qmp_query_vnc(Error **errp)
}
switch (addr->type) {
- case SOCKET_ADDRESS_LEGACY_KIND_INET:
- info->host = g_strdup(addr->u.inet.data->host);
- info->service = g_strdup(addr->u.inet.data->port);
- if (addr->u.inet.data->ipv6) {
+ case SOCKET_ADDRESS_TYPE_INET:
+ info->host = g_strdup(addr->u.inet.host);
+ info->service = g_strdup(addr->u.inet.port);
+ if (addr->u.inet.ipv6) {
info->family = NETWORK_ADDRESS_FAMILY_IPV6;
} else {
info->family = NETWORK_ADDRESS_FAMILY_IPV4;
}
break;
- case SOCKET_ADDRESS_LEGACY_KIND_UNIX:
+ case SOCKET_ADDRESS_TYPE_UNIX:
info->host = g_strdup("");
- info->service = g_strdup(addr->u.q_unix.data->path);
+ info->service = g_strdup(addr->u.q_unix.path);
info->family = NETWORK_ADDRESS_FAMILY_UNIX;
break;
- case SOCKET_ADDRESS_LEGACY_KIND_VSOCK:
- case SOCKET_ADDRESS_LEGACY_KIND_FD:
+ case SOCKET_ADDRESS_TYPE_VSOCK:
+ case SOCKET_ADDRESS_TYPE_FD:
error_setg(errp, "Unsupported socket address type %s",
- SocketAddressLegacyKind_lookup[addr->type]);
+ SocketAddressType_lookup[addr->type]);
goto out_error;
default:
abort();
@@ -431,11 +431,11 @@ VncInfo *qmp_query_vnc(Error **errp)
info->auth = g_strdup(vnc_auth_name(vd));
}
- qapi_free_SocketAddressLegacy(addr);
+ qapi_free_SocketAddress(addr);
return info;
out_error:
- qapi_free_SocketAddressLegacy(addr);
+ qapi_free_SocketAddress(addr);
qapi_free_VncInfo(info);
return NULL;
}
@@ -455,7 +455,7 @@ static VncServerInfo2List *qmp_query_server_entry(QIOChannelSocket *ioc,
VncServerInfo2List *list;
VncServerInfo2 *info;
Error *err = NULL;
- SocketAddressLegacy *addr;
+ SocketAddress *addr;
addr = qio_channel_socket_get_local_address(ioc, &err);
if (!addr) {
@@ -465,7 +465,7 @@ static VncServerInfo2List *qmp_query_server_entry(QIOChannelSocket *ioc,
info = g_new0(VncServerInfo2, 1);
vnc_init_basic_info(addr, qapi_VncServerInfo2_base(info), &err);
- qapi_free_SocketAddressLegacy(addr);
+ qapi_free_SocketAddress(addr);
if (err) {
qapi_free_VncServerInfo2(info);
error_free(err);
@@ -3149,7 +3149,7 @@ int vnc_display_pw_expire(const char *id, time_t expires)
static void vnc_display_print_local_addr(VncDisplay *vd)
{
- SocketAddressLegacy *addr;
+ SocketAddress *addr;
Error *err = NULL;
if (!vd->nlsock) {
@@ -3161,14 +3161,14 @@ static void vnc_display_print_local_addr(VncDisplay *vd)
return;
}
- if (addr->type != SOCKET_ADDRESS_LEGACY_KIND_INET) {
- qapi_free_SocketAddressLegacy(addr);
+ if (addr->type != SOCKET_ADDRESS_TYPE_INET) {
+ qapi_free_SocketAddress(addr);
return;
}
error_printf_unless_qmp("VNC server running on %s:%s\n",
- addr->u.inet.data->host,
- addr->u.inet.data->port);
- qapi_free_SocketAddressLegacy(addr);
+ addr->u.inet.host,
+ addr->u.inet.port);
+ qapi_free_SocketAddress(addr);
}
static QemuOptsList qemu_vnc_opts = {
@@ -3414,18 +3414,17 @@ static int vnc_display_get_address(const char *addrstr,
bool has_ipv6,
bool ipv4,
bool ipv6,
- SocketAddressLegacy **retaddr,
+ SocketAddress **retaddr,
Error **errp)
{
int ret = -1;
- SocketAddressLegacy *addr = NULL;
+ SocketAddress *addr = NULL;
- addr = g_new0(SocketAddressLegacy, 1);
+ addr = g_new0(SocketAddress, 1);
if (strncmp(addrstr, "unix:", 5) == 0) {
- addr->type = SOCKET_ADDRESS_LEGACY_KIND_UNIX;
- addr->u.q_unix.data = g_new0(UnixSocketAddress, 1);
- addr->u.q_unix.data->path = g_strdup(addrstr + 5);
+ addr->type = SOCKET_ADDRESS_TYPE_UNIX;
+ addr->u.q_unix.path = g_strdup(addrstr + 5);
if (websocket) {
error_setg(errp, "UNIX sockets not supported with websock");
@@ -3461,8 +3460,8 @@ static int vnc_display_get_address(const char *addrstr,
}
}
- addr->type = SOCKET_ADDRESS_LEGACY_KIND_INET;
- inet = addr->u.inet.data = g_new0(InetSocketAddress, 1);
+ addr->type = SOCKET_ADDRESS_TYPE_INET;
+ inet = &addr->u.inet;
if (addrstr[0] == '[' && addrstr[hostlen - 1] == ']') {
inet->host = g_strndup(addrstr + 1, hostlen - 2);
} else {
@@ -3518,21 +3517,21 @@ static int vnc_display_get_address(const char *addrstr,
cleanup:
if (ret < 0) {
- qapi_free_SocketAddressLegacy(addr);
+ qapi_free_SocketAddress(addr);
}
return ret;
}
static int vnc_display_get_addresses(QemuOpts *opts,
bool reverse,
- SocketAddressLegacy ***retsaddr,
+ SocketAddress ***retsaddr,
size_t *retnsaddr,
- SocketAddressLegacy ***retwsaddr,
+ SocketAddress ***retwsaddr,
size_t *retnwsaddr,
Error **errp)
{
- SocketAddressLegacy *saddr = NULL;
- SocketAddressLegacy *wsaddr = NULL;
+ SocketAddress *saddr = NULL;
+ SocketAddress *wsaddr = NULL;
QemuOptsIter addriter;
const char *addr;
int to = qemu_opt_get_number(opts, "to", 0);
@@ -3577,7 +3576,7 @@ static int vnc_display_get_addresses(QemuOpts *opts,
if (displaynum == -1) {
displaynum = rv;
}
- *retsaddr = g_renew(SocketAddressLegacy *, *retsaddr, *retnsaddr + 1);
+ *retsaddr = g_renew(SocketAddress *, *retsaddr, *retnsaddr + 1);
(*retsaddr)[(*retnsaddr)++] = saddr;
}
@@ -3601,16 +3600,15 @@ static int vnc_display_get_addresses(QemuOpts *opts,
* address for websocket too
*/
if (*retnsaddr == 1 &&
- (*retsaddr)[0]->type == SOCKET_ADDRESS_LEGACY_KIND_INET &&
- wsaddr->type == SOCKET_ADDRESS_LEGACY_KIND_INET &&
- g_str_equal(wsaddr->u.inet.data->host, "") &&
- !g_str_equal((*retsaddr)[0]->u.inet.data->host, "")) {
- g_free(wsaddr->u.inet.data->host);
- wsaddr->u.inet.data->host =
- g_strdup((*retsaddr)[0]->u.inet.data->host);
+ (*retsaddr)[0]->type == SOCKET_ADDRESS_TYPE_INET &&
+ wsaddr->type == SOCKET_ADDRESS_TYPE_INET &&
+ g_str_equal(wsaddr->u.inet.host, "") &&
+ !g_str_equal((*retsaddr)[0]->u.inet.host, "")) {
+ g_free(wsaddr->u.inet.host);
+ wsaddr->u.inet.host = g_strdup((*retsaddr)[0]->u.inet.host);
}
- *retwsaddr = g_renew(SocketAddressLegacy *, *retwsaddr, *retnwsaddr + 1);
+ *retwsaddr = g_renew(SocketAddress *, *retwsaddr, *retnwsaddr + 1);
(*retwsaddr)[(*retnwsaddr)++] = wsaddr;
}
@@ -3618,11 +3616,11 @@ static int vnc_display_get_addresses(QemuOpts *opts,
cleanup:
if (ret < 0) {
for (i = 0; i < *retnsaddr; i++) {
- qapi_free_SocketAddressLegacy((*retsaddr)[i]);
+ qapi_free_SocketAddress((*retsaddr)[i]);
}
g_free(*retsaddr);
for (i = 0; i < *retnwsaddr; i++) {
- qapi_free_SocketAddressLegacy((*retwsaddr)[i]);
+ qapi_free_SocketAddress((*retwsaddr)[i]);
}
g_free(*retwsaddr);
*retsaddr = *retwsaddr = NULL;
@@ -3632,9 +3630,9 @@ static int vnc_display_get_addresses(QemuOpts *opts,
}
static int vnc_display_connect(VncDisplay *vd,
- SocketAddressLegacy **saddr,
+ SocketAddress **saddr,
size_t nsaddr,
- SocketAddressLegacy **wsaddr,
+ SocketAddress **wsaddr,
size_t nwsaddr,
Error **errp)
{
@@ -3648,8 +3646,8 @@ static int vnc_display_connect(VncDisplay *vd,
error_setg(errp, "Expected a single address in reverse mode");
return -1;
}
- /* TODO SOCKET_ADDRESS_LEGACY_KIND_FD when fd has AF_UNIX */
- vd->is_unix = saddr[0]->type == SOCKET_ADDRESS_LEGACY_KIND_UNIX;
+ /* TODO SOCKET_ADDRESS_TYPE_FD when fd has AF_UNIX */
+ vd->is_unix = saddr[0]->type == SOCKET_ADDRESS_TYPE_UNIX;
sioc = qio_channel_socket_new();
qio_channel_set_name(QIO_CHANNEL(sioc), "vnc-reverse");
if (qio_channel_socket_connect_sync(sioc, saddr[0], errp) < 0) {
@@ -3662,7 +3660,7 @@ static int vnc_display_connect(VncDisplay *vd,
static int vnc_display_listen_addr(VncDisplay *vd,
- SocketAddressLegacy *addr,
+ SocketAddress *addr,
const char *name,
QIOChannelSocket ***lsock,
guint **lsock_tag,
@@ -3670,7 +3668,7 @@ static int vnc_display_listen_addr(VncDisplay *vd,
Error **errp)
{
QIODNSResolver *resolver = qio_dns_resolver_get_instance();
- SocketAddressLegacy **rawaddrs = NULL;
+ SocketAddress **rawaddrs = NULL;
size_t nrawaddrs = 0;
Error *listenerr = NULL;
bool listening = false;
@@ -3700,7 +3698,7 @@ static int vnc_display_listen_addr(VncDisplay *vd,
}
for (i = 0; i < nrawaddrs; i++) {
- qapi_free_SocketAddressLegacy(rawaddrs[i]);
+ qapi_free_SocketAddress(rawaddrs[i]);
}
g_free(rawaddrs);
@@ -3724,9 +3722,9 @@ static int vnc_display_listen_addr(VncDisplay *vd,
static int vnc_display_listen(VncDisplay *vd,
- SocketAddressLegacy **saddr,
+ SocketAddress **saddr,
size_t nsaddr,
- SocketAddressLegacy **wsaddr,
+ SocketAddress **wsaddr,
size_t nwsaddr,
Error **errp)
{
@@ -3761,7 +3759,7 @@ void vnc_display_open(const char *id, Error **errp)
{
VncDisplay *vd = vnc_display_find(id);
QemuOpts *opts = qemu_opts_find(&qemu_vnc_opts, id);
- SocketAddressLegacy **saddr = NULL, **wsaddr = NULL;
+ SocketAddress **saddr = NULL, **wsaddr = NULL;
size_t nsaddr, nwsaddr;
const char *share, *device_id;
QemuConsole *con;
@@ -3997,10 +3995,10 @@ void vnc_display_open(const char *id, Error **errp)
cleanup:
for (i = 0; i < nsaddr; i++) {
- qapi_free_SocketAddressLegacy(saddr[i]);
+ qapi_free_SocketAddress(saddr[i]);
}
for (i = 0; i < nwsaddr; i++) {
- qapi_free_SocketAddressLegacy(wsaddr[i]);
+ qapi_free_SocketAddress(wsaddr[i]);
}
return;