From 8f16de18f6d8d0c0b4982bbe13f7b6a048b0e876 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Thu, 27 Apr 2017 16:58:13 -0500 Subject: pci: Reduce scope of error injection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit No one outside of pcie_aer.h was using error injection; mark them static for internal use. Signed-off-by: Eric Blake Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Michael S. Tsirkin Reviewed-by: Marcel Apfelbaum Reviewed-by: Markus Armbruster Message-Id: <20170427215821.19397-3-eblake@redhat.com> Signed-off-by: Markus Armbruster --- include/hw/pci/pcie_aer.h | 4 ---- 1 file changed, 4 deletions(-) (limited to 'include') diff --git a/include/hw/pci/pcie_aer.h b/include/hw/pci/pcie_aer.h index 526802bd31..729a9439c8 100644 --- a/include/hw/pci/pcie_aer.h +++ b/include/hw/pci/pcie_aer.h @@ -100,8 +100,4 @@ void pcie_aer_root_write_config(PCIDevice *dev, uint32_t addr, uint32_t val, int len, uint32_t root_cmd_prev); -/* error injection */ -int pcie_aer_inject_error(PCIDevice *dev, const PCIEAERErr *err); -void pcie_aer_msg(PCIDevice *dev, const PCIEAERMsg *msg); - #endif /* QEMU_PCIE_AER_H */ -- cgit v1.2.1 From a92c21591b5bb9543996538f14854ca6b528318b Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Thu, 27 Apr 2017 16:58:16 -0500 Subject: qobject: Add helper macros for common scalar insertions Rather than making lots of callers wrap a scalar in a QInt, QString, or QBool, provide helper macros that do the wrapping automatically. Update the Coccinelle script to make mass conversions easy, although the conversion itself will be done as a separate patches to ease review and backport efforts. Signed-off-by: Eric Blake Reviewed-by: Markus Armbruster Message-Id: <20170427215821.19397-6-eblake@redhat.com> Signed-off-by: Markus Armbruster --- include/qapi/qmp/qdict.h | 8 ++++++++ include/qapi/qmp/qlist.h | 8 ++++++++ 2 files changed, 16 insertions(+) (limited to 'include') diff --git a/include/qapi/qmp/qdict.h b/include/qapi/qmp/qdict.h index fe9a4c5c60..188440a6a8 100644 --- a/include/qapi/qmp/qdict.h +++ b/include/qapi/qmp/qdict.h @@ -52,6 +52,14 @@ void qdict_destroy_obj(QObject *obj); #define qdict_put(qdict, key, obj) \ qdict_put_obj(qdict, key, QOBJECT(obj)) +/* Helpers for int, bool, and string */ +#define qdict_put_int(qdict, key, value) \ + qdict_put(qdict, key, qint_from_int(value)) +#define qdict_put_bool(qdict, key, value) \ + qdict_put(qdict, key, qbool_from_bool(value)) +#define qdict_put_str(qdict, key, value) \ + qdict_put(qdict, key, qstring_from_str(value)) + /* High level helpers */ double qdict_get_double(const QDict *qdict, const char *key); int64_t qdict_get_int(const QDict *qdict, const char *key); diff --git a/include/qapi/qmp/qlist.h b/include/qapi/qmp/qlist.h index a84117ecb1..5dc4ed9616 100644 --- a/include/qapi/qmp/qlist.h +++ b/include/qapi/qmp/qlist.h @@ -29,6 +29,14 @@ typedef struct QList { #define qlist_append(qlist, obj) \ qlist_append_obj(qlist, QOBJECT(obj)) +/* Helpers for int, bool, and string */ +#define qlist_append_int(qlist, value) \ + qlist_append(qlist, qint_from_int(value)) +#define qlist_append_bool(qlist, value) \ + qlist_append(qlist, qbool_from_bool(value)) +#define qlist_append_str(qlist, value) \ + qlist_append(qlist, qstring_from_str(value)) + #define QLIST_FOREACH_ENTRY(qlist, var) \ for ((var) = ((qlist)->head.tqh_first); \ (var); \ -- cgit v1.2.1 From 0785bd7a7c58ffaf533f484cb0661671a64ecffd Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 26 Apr 2017 09:36:37 +0200 Subject: sockets: Prepare inet_parse() for flattened SocketAddress I'm going to flatten SocketAddress: rename SocketAddress to SocketAddressLegacy, SocketAddressFlat to SocketAddress, eliminate SocketAddressLegacy except in external interfaces. inet_parse() returns a newly allocated InetSocketAddress. Lift the allocation from inet_parse() into its caller socket_parse() to prepare for flattening SocketAddress. Signed-off-by: Markus Armbruster Message-Id: <1493192202-3184-3-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake [Straightforward rebase] --- include/qemu/sockets.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h index af285321b8..8b9325cb62 100644 --- a/include/qemu/sockets.h +++ b/include/qemu/sockets.h @@ -34,7 +34,7 @@ typedef void NonBlockingConnectHandler(int fd, Error *err, void *opaque); int inet_ai_family_from_address(InetSocketAddress *addr, Error **errp); -InetSocketAddress *inet_parse(const char *str, Error **errp); +int inet_parse(InetSocketAddress *addr, const char *str, Error **errp); int inet_connect(const char *str, Error **errp); int inet_connect_saddr(InetSocketAddress *saddr, NonBlockingConnectHandler *callback, void *opaque, -- cgit v1.2.1 From 4626a19c86c30d96cedbac2bd44ef8103303cb37 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 26 Apr 2017 09:36:38 +0200 Subject: qapi: New QAPI_CLONE_MEMBERS() QAPI_CLONE() returns a newly allocated QAPI object. Inconvenient when we want to clone into an existing object. QAPI_CLONE_MEMBERS() does exactly that. Signed-off-by: Markus Armbruster Message-Id: <1493192202-3184-4-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake --- include/qapi/clone-visitor.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'include') diff --git a/include/qapi/clone-visitor.h b/include/qapi/clone-visitor.h index b16177e1ee..a4915c7d57 100644 --- a/include/qapi/clone-visitor.h +++ b/include/qapi/clone-visitor.h @@ -24,6 +24,9 @@ typedef struct QapiCloneVisitor QapiCloneVisitor; void *qapi_clone(const void *src, void (*visit_type)(Visitor *, const char *, void **, Error **)); +void qapi_clone_members(void *dst, const void *src, size_t sz, + void (*visit_type_members)(Visitor *, void *, + Error **)); /* * Deep-clone QAPI object @src of the given @type, and return the result. @@ -36,4 +39,15 @@ void *qapi_clone(const void *src, void (*visit_type)(Visitor *, const char *, (void (*)(Visitor *, const char *, void**, \ Error **))visit_type_ ## type)) +/* + * Copy deep clones of @type members from @src to @dst. + * + * Not usable on QAPI scalars (integers, strings, enums), nor on a + * QAPI object that references the 'any' type. + */ +#define QAPI_CLONE_MEMBERS(type, dst, src) \ + qapi_clone_members(dst, src, sizeof(type), \ + (void (*)(Visitor *, void *, \ + Error **))visit_type_ ## type ## _members) + #endif -- cgit v1.2.1 From dfd100f242370886bb6732f70f1f7cbd8eb9fedc Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 26 Apr 2017 09:36:39 +0200 Subject: sockets: Rename SocketAddress to SocketAddressLegacy The next commit will rename SocketAddressFlat to SocketAddress, and the commit after that will replace most uses of SocketAddressLegacy by SocketAddress, replacing most of this commit's renames right back. Note that checkpatch emits a few "line over 80 characters" warnings. The long lines are all temporary; the SocketAddressLegacy replacement will shorten them again. Signed-off-by: Markus Armbruster Message-Id: <1493192202-3184-5-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake Signed-off-by: Markus Armbruster --- include/io/channel-socket.h | 24 ++++++++++++------------ include/io/dns-resolver.h | 22 +++++++++++----------- include/io/task.h | 10 +++++----- include/qemu/sockets.h | 30 +++++++++++++++--------------- 4 files changed, 43 insertions(+), 43 deletions(-) (limited to 'include') diff --git a/include/io/channel-socket.h b/include/io/channel-socket.h index 711f8bf7ce..c1aaa72a5d 100644 --- a/include/io/channel-socket.h +++ b/include/io/channel-socket.h @@ -91,7 +91,7 @@ qio_channel_socket_new_fd(int fd, * an error occurs. */ int qio_channel_socket_connect_sync(QIOChannelSocket *ioc, - SocketAddress *addr, + SocketAddressLegacy *addr, Error **errp); /** @@ -110,7 +110,7 @@ int qio_channel_socket_connect_sync(QIOChannelSocket *ioc, * as this function returns without waiting for completion. */ void qio_channel_socket_connect_async(QIOChannelSocket *ioc, - SocketAddress *addr, + SocketAddressLegacy *addr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy); @@ -128,7 +128,7 @@ void qio_channel_socket_connect_async(QIOChannelSocket *ioc, * an error occurs. */ int qio_channel_socket_listen_sync(QIOChannelSocket *ioc, - SocketAddress *addr, + SocketAddressLegacy *addr, Error **errp); /** @@ -147,7 +147,7 @@ int qio_channel_socket_listen_sync(QIOChannelSocket *ioc, * as this function returns without waiting for completion. */ void qio_channel_socket_listen_async(QIOChannelSocket *ioc, - SocketAddress *addr, + SocketAddressLegacy *addr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy); @@ -167,8 +167,8 @@ void qio_channel_socket_listen_async(QIOChannelSocket *ioc, * is established or an error occurs. */ int qio_channel_socket_dgram_sync(QIOChannelSocket *ioc, - SocketAddress *localAddr, - SocketAddress *remoteAddr, + SocketAddressLegacy *localAddr, + SocketAddressLegacy *remoteAddr, Error **errp); /** @@ -190,8 +190,8 @@ int qio_channel_socket_dgram_sync(QIOChannelSocket *ioc, * waiting for completion. */ void qio_channel_socket_dgram_async(QIOChannelSocket *ioc, - SocketAddress *localAddr, - SocketAddress *remoteAddr, + SocketAddressLegacy *localAddr, + SocketAddressLegacy *remoteAddr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy); @@ -205,12 +205,12 @@ void qio_channel_socket_dgram_async(QIOChannelSocket *ioc, * Get the string representation of the local socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddress when no + * release with a call qapi_free_SocketAddressLegacy() when no * longer required. * * Returns: 0 on success, -1 on error */ -SocketAddress * +SocketAddressLegacy * qio_channel_socket_get_local_address(QIOChannelSocket *ioc, Error **errp); @@ -222,12 +222,12 @@ qio_channel_socket_get_local_address(QIOChannelSocket *ioc, * Get the string representation of the local socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddress when no + * release with a call qapi_free_SocketAddressLegacy() when no * longer required. * * Returns: the socket address struct, or NULL on error */ -SocketAddress * +SocketAddressLegacy * qio_channel_socket_get_remote_address(QIOChannelSocket *ioc, Error **errp); diff --git a/include/io/dns-resolver.h b/include/io/dns-resolver.h index 2f69c08c13..aac46cadea 100644 --- a/include/io/dns-resolver.h +++ b/include/io/dns-resolver.h @@ -40,15 +40,15 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * QIODNSResolver: * * The QIODNSResolver class provides a framework for doing - * DNS resolution on SocketAddress objects, independently + * DNS resolution on SocketAddressLegacy objects, independently * of socket creation. * * * Resolving addresses synchronously * - * int mylisten(SocketAddress *addr, Error **errp) { + * int mylisten(SocketAddressLegacy *addr, Error **errp) { * QIODNSResolver *resolver = qio_dns_resolver_get_instance(); - * SocketAddress **rawaddrs = NULL; + * SocketAddressLegacy **rawaddrs = NULL; * size_t nrawaddrs = 0; * Error *err = NULL; * QIOChannel **socks = NULL; @@ -69,7 +69,7 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * socks = g_renew(QIOChannelSocket *, socks, nsocks + 1); * socks[nsocks++] = sock; * } - * qapi_free_SocketAddress(rawaddrs[i]); + * qapi_free_SocketAddressLegacy(rawaddrs[i]); * } * g_free(rawaddrs); * @@ -95,7 +95,7 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * MyListenData *data = opaque; * QIODNSResolver *resolver = * QIO_DNS_RESOLVER(qio_task_get_source(task); - * SocketAddress **rawaddrs = NULL; + * SocketAddressLegacy **rawaddrs = NULL; * size_t nrawaddrs = 0; * Error *err = NULL; * @@ -116,7 +116,7 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * socks = g_renew(QIOChannelSocket *, socks, nsocks + 1); * socks[nsocks++] = sock; * } - * qapi_free_SocketAddress(rawaddrs[i]); + * qapi_free_SocketAddressLegacy(rawaddrs[i]); * } * g_free(rawaddrs); * @@ -127,7 +127,7 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * } * } * - * void mylisten(SocketAddress *addr, MyListenData *data) { + * void mylisten(SocketAddressLegacy *addr, MyListenData *data) { * QIODNSResolver *resolver = qio_dns_resolver_get_instance(); * qio_dns_resolver_lookup_async(dns, addr, * mylistenresult, data, NULL); @@ -177,9 +177,9 @@ QIODNSResolver *qio_dns_resolver_get_instance(void); * Returns: 0 if resolution was successful, -1 on error */ int qio_dns_resolver_lookup_sync(QIODNSResolver *resolver, - SocketAddress *addr, + SocketAddressLegacy *addr, size_t *naddrs, - SocketAddress ***addrs, + SocketAddressLegacy ***addrs, Error **errp); /** @@ -201,7 +201,7 @@ int qio_dns_resolver_lookup_sync(QIODNSResolver *resolver, * of the caller will not be blocked. */ void qio_dns_resolver_lookup_async(QIODNSResolver *resolver, - SocketAddress *addr, + SocketAddressLegacy *addr, QIOTaskFunc func, gpointer opaque, GDestroyNotify notify); @@ -223,6 +223,6 @@ void qio_dns_resolver_lookup_async(QIODNSResolver *resolver, void qio_dns_resolver_lookup_result(QIODNSResolver *resolver, QIOTask *task, size_t *naddrs, - SocketAddress ***addrs); + SocketAddressLegacy ***addrs); #endif /* QIO_DNS_RESOLVER_H */ diff --git a/include/io/task.h b/include/io/task.h index 6021f51336..f65ec7aca3 100644 --- a/include/io/task.h +++ b/include/io/task.h @@ -166,7 +166,7 @@ typedef void (*QIOTaskWorker)(QIOTask *task, * gpointer opaque) * { * QMyObject obj = QMY_OBJECT(qio_task_get_source(task)); - * SocketAddress *addr = opaque; + * SocketAddressLegacy *addr = opaque; * Error *err = NULL; * * obj->fd = socket_listen(addr, &err); @@ -175,20 +175,20 @@ typedef void (*QIOTaskWorker)(QIOTask *task, * } * * void myobject_listen_async(QMyObject *obj, - * SocketAddress *addr, + * SocketAddressLegacy *addr, * QIOTaskFunc *func, * gpointer opaque, * GDestroyNotify notify) * { * QIOTask *task; - * SocketAddress *addrCopy; + * SocketAddressLegacy *addrCopy; * - * addrCopy = QAPI_CLONE(SocketAddress, addr); + * addrCopy = QAPI_CLONE(SocketAddressLegacy, addr); * task = qio_task_new(OBJECT(obj), func, opaque, notify); * * qio_task_run_in_thread(task, myobject_listen_worker, * addrCopy, - * qapi_free_SocketAddress); + * qapi_free_SocketAddressLegacy); * } * * diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h index 8b9325cb62..f4a4b10acf 100644 --- a/include/qemu/sockets.h +++ b/include/qemu/sockets.h @@ -45,12 +45,12 @@ NetworkAddressFamily inet_netfamily(int family); int unix_listen(const char *path, char *ostr, int olen, Error **errp); int unix_connect(const char *path, Error **errp); -SocketAddress *socket_parse(const char *str, Error **errp); -int socket_connect(SocketAddress *addr, NonBlockingConnectHandler *callback, +SocketAddressLegacy *socket_parse(const char *str, Error **errp); +int socket_connect(SocketAddressLegacy *addr, NonBlockingConnectHandler *callback, void *opaque, Error **errp); -int socket_listen(SocketAddress *addr, Error **errp); +int socket_listen(SocketAddressLegacy *addr, Error **errp); void socket_listen_cleanup(int fd, Error **errp); -int socket_dgram(SocketAddress *remote, SocketAddress *local, Error **errp); +int socket_dgram(SocketAddressLegacy *remote, SocketAddressLegacy *local, Error **errp); /* Old, ipv4 only bits. Don't use for new code. */ int parse_host_port(struct sockaddr_in *saddr, const char *str); @@ -65,12 +65,12 @@ int socket_init(void); * Get the string representation of the socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddress when no + * release with a call qapi_free_SocketAddressLegacy() when no * longer required. * * Returns: the socket address struct, or NULL on error */ -SocketAddress * +SocketAddressLegacy * socket_sockaddr_to_address(struct sockaddr_storage *sa, socklen_t salen, Error **errp); @@ -83,12 +83,12 @@ socket_sockaddr_to_address(struct sockaddr_storage *sa, * Get the string representation of the local socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddress when no + * release with a call qapi_free_SocketAddressLegacy() when no * longer required. * * Returns: the socket address struct, or NULL on error */ -SocketAddress *socket_local_address(int fd, Error **errp); +SocketAddressLegacy *socket_local_address(int fd, Error **errp); /** * socket_remote_address: @@ -98,12 +98,12 @@ SocketAddress *socket_local_address(int fd, Error **errp); * Get the string representation of the remote socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddress when no + * release with a call qapi_free_SocketAddressLegacy() when no * longer required. * * Returns: the socket address struct, or NULL on error */ -SocketAddress *socket_remote_address(int fd, Error **errp); +SocketAddressLegacy *socket_remote_address(int fd, Error **errp); /** * socket_address_to_string: @@ -118,17 +118,17 @@ SocketAddress *socket_remote_address(int fd, Error **errp); * * Returns: the socket address in string format, or NULL on error */ -char *socket_address_to_string(struct SocketAddress *addr, Error **errp); +char *socket_address_to_string(struct SocketAddressLegacy *addr, Error **errp); /** * socket_address_crumple: * @addr_flat: the socket address to crumple * - * Convert SocketAddressFlat to SocketAddress. Caller is responsible - * for freeing with qapi_free_SocketAddress(). + * Convert SocketAddressFlat to SocketAddressLegacy. Caller is responsible + * for freeing with qapi_free_SocketAddressLegacy(). * - * Returns: the argument converted to SocketAddress. + * Returns: the argument converted to SocketAddressLegacy. */ -SocketAddress *socket_address_crumple(SocketAddressFlat *addr_flat); +SocketAddressLegacy *socket_address_crumple(SocketAddressFlat *addr_flat); #endif /* QEMU_SOCKETS_H */ -- cgit v1.2.1 From 62cf396b5d397948c5ac4d04d09596ca14f6c173 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 26 Apr 2017 09:36:40 +0200 Subject: sockets: Rename SocketAddressFlat to SocketAddress Signed-off-by: Markus Armbruster Message-Id: <1493192202-3184-6-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake Reviewed-by: Prasanna Kumar Kalever --- include/qemu/sockets.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h index f4a4b10acf..82b7460ea4 100644 --- a/include/qemu/sockets.h +++ b/include/qemu/sockets.h @@ -124,11 +124,11 @@ char *socket_address_to_string(struct SocketAddressLegacy *addr, Error **errp); * socket_address_crumple: * @addr_flat: the socket address to crumple * - * Convert SocketAddressFlat to SocketAddressLegacy. Caller is responsible + * Convert SocketAddress to SocketAddressLegacy. Caller is responsible * for freeing with qapi_free_SocketAddressLegacy(). * * Returns: the argument converted to SocketAddressLegacy. */ -SocketAddressLegacy *socket_address_crumple(SocketAddressFlat *addr_flat); +SocketAddressLegacy *socket_address_crumple(SocketAddress *addr); #endif /* QEMU_SOCKETS_H */ -- cgit v1.2.1 From bd269ebc82fbaa5fe7ce5bc7c1770ac8acecd884 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 26 Apr 2017 09:36:41 +0200 Subject: sockets: Limit SocketAddressLegacy to external interfaces SocketAddressLegacy is a simple union, and simple unions are awkward: they have their variant members wrapped in a "data" object on the wire, and require additional indirections in C. SocketAddress is the equivalent flat union. Convert all users of SocketAddressLegacy to SocketAddress, except for existing external interfaces. See also commit fce5d53..9445673 and 85a82e8..c5f1ae3. Signed-off-by: Markus Armbruster Message-Id: <1493192202-3184-7-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake [Minor editing accident fixed, commit message and a comment tweaked] Signed-off-by: Markus Armbruster --- include/block/nbd.h | 3 +++ include/io/channel-socket.h | 24 ++++++++++++------------ include/io/dns-resolver.h | 22 +++++++++++----------- include/io/task.h | 10 +++++----- include/qemu/sockets.h | 33 ++++++++++++++++++++++----------- 5 files changed, 53 insertions(+), 39 deletions(-) (limited to 'include') diff --git a/include/block/nbd.h b/include/block/nbd.h index 3e373f0498..0ed077502e 100644 --- a/include/block/nbd.h +++ b/include/block/nbd.h @@ -164,4 +164,7 @@ void nbd_client_new(NBDExport *exp, void nbd_client_get(NBDClient *client); void nbd_client_put(NBDClient *client); +void nbd_server_start(SocketAddress *addr, const char *tls_creds, + Error **errp); + #endif diff --git a/include/io/channel-socket.h b/include/io/channel-socket.h index c1aaa72a5d..53801f6042 100644 --- a/include/io/channel-socket.h +++ b/include/io/channel-socket.h @@ -91,7 +91,7 @@ qio_channel_socket_new_fd(int fd, * an error occurs. */ int qio_channel_socket_connect_sync(QIOChannelSocket *ioc, - SocketAddressLegacy *addr, + SocketAddress *addr, Error **errp); /** @@ -110,7 +110,7 @@ int qio_channel_socket_connect_sync(QIOChannelSocket *ioc, * as this function returns without waiting for completion. */ void qio_channel_socket_connect_async(QIOChannelSocket *ioc, - SocketAddressLegacy *addr, + SocketAddress *addr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy); @@ -128,7 +128,7 @@ void qio_channel_socket_connect_async(QIOChannelSocket *ioc, * an error occurs. */ int qio_channel_socket_listen_sync(QIOChannelSocket *ioc, - SocketAddressLegacy *addr, + SocketAddress *addr, Error **errp); /** @@ -147,7 +147,7 @@ int qio_channel_socket_listen_sync(QIOChannelSocket *ioc, * as this function returns without waiting for completion. */ void qio_channel_socket_listen_async(QIOChannelSocket *ioc, - SocketAddressLegacy *addr, + SocketAddress *addr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy); @@ -167,8 +167,8 @@ void qio_channel_socket_listen_async(QIOChannelSocket *ioc, * is established or an error occurs. */ int qio_channel_socket_dgram_sync(QIOChannelSocket *ioc, - SocketAddressLegacy *localAddr, - SocketAddressLegacy *remoteAddr, + SocketAddress *localAddr, + SocketAddress *remoteAddr, Error **errp); /** @@ -190,8 +190,8 @@ int qio_channel_socket_dgram_sync(QIOChannelSocket *ioc, * waiting for completion. */ void qio_channel_socket_dgram_async(QIOChannelSocket *ioc, - SocketAddressLegacy *localAddr, - SocketAddressLegacy *remoteAddr, + SocketAddress *localAddr, + SocketAddress *remoteAddr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy); @@ -205,12 +205,12 @@ void qio_channel_socket_dgram_async(QIOChannelSocket *ioc, * Get the string representation of the local socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddressLegacy() when no + * release with a call qapi_free_SocketAddress() when no * longer required. * * Returns: 0 on success, -1 on error */ -SocketAddressLegacy * +SocketAddress * qio_channel_socket_get_local_address(QIOChannelSocket *ioc, Error **errp); @@ -222,12 +222,12 @@ qio_channel_socket_get_local_address(QIOChannelSocket *ioc, * Get the string representation of the local socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddressLegacy() when no + * release with a call qapi_free_SocketAddress() when no * longer required. * * Returns: the socket address struct, or NULL on error */ -SocketAddressLegacy * +SocketAddress * qio_channel_socket_get_remote_address(QIOChannelSocket *ioc, Error **errp); diff --git a/include/io/dns-resolver.h b/include/io/dns-resolver.h index aac46cadea..2f69c08c13 100644 --- a/include/io/dns-resolver.h +++ b/include/io/dns-resolver.h @@ -40,15 +40,15 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * QIODNSResolver: * * The QIODNSResolver class provides a framework for doing - * DNS resolution on SocketAddressLegacy objects, independently + * DNS resolution on SocketAddress objects, independently * of socket creation. * * * Resolving addresses synchronously * - * int mylisten(SocketAddressLegacy *addr, Error **errp) { + * int mylisten(SocketAddress *addr, Error **errp) { * QIODNSResolver *resolver = qio_dns_resolver_get_instance(); - * SocketAddressLegacy **rawaddrs = NULL; + * SocketAddress **rawaddrs = NULL; * size_t nrawaddrs = 0; * Error *err = NULL; * QIOChannel **socks = NULL; @@ -69,7 +69,7 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * socks = g_renew(QIOChannelSocket *, socks, nsocks + 1); * socks[nsocks++] = sock; * } - * qapi_free_SocketAddressLegacy(rawaddrs[i]); + * qapi_free_SocketAddress(rawaddrs[i]); * } * g_free(rawaddrs); * @@ -95,7 +95,7 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * MyListenData *data = opaque; * QIODNSResolver *resolver = * QIO_DNS_RESOLVER(qio_task_get_source(task); - * SocketAddressLegacy **rawaddrs = NULL; + * SocketAddress **rawaddrs = NULL; * size_t nrawaddrs = 0; * Error *err = NULL; * @@ -116,7 +116,7 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * socks = g_renew(QIOChannelSocket *, socks, nsocks + 1); * socks[nsocks++] = sock; * } - * qapi_free_SocketAddressLegacy(rawaddrs[i]); + * qapi_free_SocketAddress(rawaddrs[i]); * } * g_free(rawaddrs); * @@ -127,7 +127,7 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * } * } * - * void mylisten(SocketAddressLegacy *addr, MyListenData *data) { + * void mylisten(SocketAddress *addr, MyListenData *data) { * QIODNSResolver *resolver = qio_dns_resolver_get_instance(); * qio_dns_resolver_lookup_async(dns, addr, * mylistenresult, data, NULL); @@ -177,9 +177,9 @@ QIODNSResolver *qio_dns_resolver_get_instance(void); * Returns: 0 if resolution was successful, -1 on error */ int qio_dns_resolver_lookup_sync(QIODNSResolver *resolver, - SocketAddressLegacy *addr, + SocketAddress *addr, size_t *naddrs, - SocketAddressLegacy ***addrs, + SocketAddress ***addrs, Error **errp); /** @@ -201,7 +201,7 @@ int qio_dns_resolver_lookup_sync(QIODNSResolver *resolver, * of the caller will not be blocked. */ void qio_dns_resolver_lookup_async(QIODNSResolver *resolver, - SocketAddressLegacy *addr, + SocketAddress *addr, QIOTaskFunc func, gpointer opaque, GDestroyNotify notify); @@ -223,6 +223,6 @@ void qio_dns_resolver_lookup_async(QIODNSResolver *resolver, void qio_dns_resolver_lookup_result(QIODNSResolver *resolver, QIOTask *task, size_t *naddrs, - SocketAddressLegacy ***addrs); + SocketAddress ***addrs); #endif /* QIO_DNS_RESOLVER_H */ diff --git a/include/io/task.h b/include/io/task.h index f65ec7aca3..6021f51336 100644 --- a/include/io/task.h +++ b/include/io/task.h @@ -166,7 +166,7 @@ typedef void (*QIOTaskWorker)(QIOTask *task, * gpointer opaque) * { * QMyObject obj = QMY_OBJECT(qio_task_get_source(task)); - * SocketAddressLegacy *addr = opaque; + * SocketAddress *addr = opaque; * Error *err = NULL; * * obj->fd = socket_listen(addr, &err); @@ -175,20 +175,20 @@ typedef void (*QIOTaskWorker)(QIOTask *task, * } * * void myobject_listen_async(QMyObject *obj, - * SocketAddressLegacy *addr, + * SocketAddress *addr, * QIOTaskFunc *func, * gpointer opaque, * GDestroyNotify notify) * { * QIOTask *task; - * SocketAddressLegacy *addrCopy; + * SocketAddress *addrCopy; * - * addrCopy = QAPI_CLONE(SocketAddressLegacy, addr); + * addrCopy = QAPI_CLONE(SocketAddress, addr); * task = qio_task_new(OBJECT(obj), func, opaque, notify); * * qio_task_run_in_thread(task, myobject_listen_worker, * addrCopy, - * qapi_free_SocketAddressLegacy); + * qapi_free_SocketAddress); * } * * diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h index 82b7460ea4..a0b5cae03b 100644 --- a/include/qemu/sockets.h +++ b/include/qemu/sockets.h @@ -45,12 +45,12 @@ NetworkAddressFamily inet_netfamily(int family); int unix_listen(const char *path, char *ostr, int olen, Error **errp); int unix_connect(const char *path, Error **errp); -SocketAddressLegacy *socket_parse(const char *str, Error **errp); -int socket_connect(SocketAddressLegacy *addr, NonBlockingConnectHandler *callback, +SocketAddress *socket_parse(const char *str, Error **errp); +int socket_connect(SocketAddress *addr, NonBlockingConnectHandler *callback, void *opaque, Error **errp); -int socket_listen(SocketAddressLegacy *addr, Error **errp); +int socket_listen(SocketAddress *addr, Error **errp); void socket_listen_cleanup(int fd, Error **errp); -int socket_dgram(SocketAddressLegacy *remote, SocketAddressLegacy *local, Error **errp); +int socket_dgram(SocketAddress *remote, SocketAddress *local, Error **errp); /* Old, ipv4 only bits. Don't use for new code. */ int parse_host_port(struct sockaddr_in *saddr, const char *str); @@ -65,12 +65,12 @@ int socket_init(void); * Get the string representation of the socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddressLegacy() when no + * release with a call qapi_free_SocketAddress() when no * longer required. * * Returns: the socket address struct, or NULL on error */ -SocketAddressLegacy * +SocketAddress * socket_sockaddr_to_address(struct sockaddr_storage *sa, socklen_t salen, Error **errp); @@ -83,12 +83,12 @@ socket_sockaddr_to_address(struct sockaddr_storage *sa, * Get the string representation of the local socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddressLegacy() when no + * release with a call qapi_free_SocketAddress() when no * longer required. * * Returns: the socket address struct, or NULL on error */ -SocketAddressLegacy *socket_local_address(int fd, Error **errp); +SocketAddress *socket_local_address(int fd, Error **errp); /** * socket_remote_address: @@ -98,12 +98,12 @@ SocketAddressLegacy *socket_local_address(int fd, Error **errp); * Get the string representation of the remote socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddressLegacy() when no + * release with a call qapi_free_SocketAddress() when no * longer required. * * Returns: the socket address struct, or NULL on error */ -SocketAddressLegacy *socket_remote_address(int fd, Error **errp); +SocketAddress *socket_remote_address(int fd, Error **errp); /** * socket_address_to_string: @@ -118,7 +118,7 @@ SocketAddressLegacy *socket_remote_address(int fd, Error **errp); * * Returns: the socket address in string format, or NULL on error */ -char *socket_address_to_string(struct SocketAddressLegacy *addr, Error **errp); +char *socket_address_to_string(struct SocketAddress *addr, Error **errp); /** * socket_address_crumple: @@ -131,4 +131,15 @@ char *socket_address_to_string(struct SocketAddressLegacy *addr, Error **errp); */ SocketAddressLegacy *socket_address_crumple(SocketAddress *addr); +/** + * socket_address_flatten: + * @addr: the socket address to flatten + * + * Convert SocketAddressLegacy to SocketAddress. Caller is responsible + * for freeing with qapi_free_SocketAddress(). + * + * Returns: the argument converted to SocketAddress. + */ +SocketAddress *socket_address_flatten(SocketAddressLegacy *addr); + #endif /* QEMU_SOCKETS_H */ -- cgit v1.2.1 From 0c099fa7e9248a97c7854e5af84fc2479477ed5d Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 26 Apr 2017 09:36:42 +0200 Subject: sockets: Delete unused helper socket_address_crumple() Signed-off-by: Markus Armbruster Message-Id: <1493192202-3184-8-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake [Commit message typo fixed] --- include/qemu/sockets.h | 11 ----------- 1 file changed, 11 deletions(-) (limited to 'include') diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h index a0b5cae03b..5c326db232 100644 --- a/include/qemu/sockets.h +++ b/include/qemu/sockets.h @@ -120,17 +120,6 @@ SocketAddress *socket_remote_address(int fd, Error **errp); */ char *socket_address_to_string(struct SocketAddress *addr, Error **errp); -/** - * socket_address_crumple: - * @addr_flat: the socket address to crumple - * - * Convert SocketAddress to SocketAddressLegacy. Caller is responsible - * for freeing with qapi_free_SocketAddressLegacy(). - * - * Returns: the argument converted to SocketAddressLegacy. - */ -SocketAddressLegacy *socket_address_crumple(SocketAddress *addr); - /** * socket_address_flatten: * @addr: the socket address to flatten -- cgit v1.2.1 From ed0ba0f47e8cb6d924db0a54090bbb7b095fe9ea Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Thu, 27 Apr 2017 10:41:25 +0200 Subject: qapi: Document intended use of @name within alternate visits MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Markus Armbruster Message-Id: <1493282486-28338-4-git-send-email-armbru@redhat.com> Reviewed-by: Marc-André Lureau --- include/qapi/visitor.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/qapi/visitor.h b/include/qapi/visitor.h index 1a1b62012b..b0e233df76 100644 --- a/include/qapi/visitor.h +++ b/include/qapi/visitor.h @@ -63,8 +63,10 @@ * The @name parameter of visit_type_FOO() describes the relation * between this QAPI value and its parent container. When visiting * the root of a tree, @name is ignored; when visiting a member of an - * object, @name is the key associated with the value; and when - * visiting a member of a list, @name is NULL. + * object, @name is the key associated with the value; when visiting a + * member of a list, @name is NULL; and when visiting the member of an + * alternate, @name should equal the name used for visiting the + * alternate. * * The visit_type_FOO() functions expect a non-null @obj argument; * they allocate *@obj during input visits, leave it unchanged on -- cgit v1.2.1