[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/8] sockets: add ability to disable DNS resolut
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH 1/8] sockets: add ability to disable DNS resolution for InetSocketAddress |
Date: |
Thu, 5 Jan 2017 10:22:43 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 |
On 01/05/2017 10:03 AM, Daniel P. Berrange wrote:
> Add a 'numeric' flag to the InetSocketAddress struct to allow the
> caller to indicate that DNS should be skipped for the host/port
> fields. This is useful if the caller knows the address is already
> numeric and wants to guarantee no (potentially blocking) DNS
> lookups are attempted.
>
> Signed-off-by: Daniel P. Berrange <address@hidden>
> ---
> qapi-schema.json | 5 +++++
> util/qemu-sockets.c | 3 +++
> 2 files changed, 8 insertions(+)
>
> diff --git a/qapi-schema.json b/qapi-schema.json
> index a0d3b5d..d605c1e 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -3070,6 +3070,10 @@
> #
> # @port: port part of the address, or lowest port if @to is present
> #
> +# @numeric: #optional true if the host/port are guaranteed to be numeric,
> +# false if name resolution should be attempted. Defaults to false.
> +# Since 2.8
2.9, actually. I'm also not sure if Marc-Andre's work requires ()
brackets around the since designation on a per-member listing.
> @@ -3084,6 +3088,7 @@
> 'data': {
> 'host': 'str',
> 'port': 'str',
> + 'numeric': 'bool',
In order to be optional, it must be spelled '*numeric'.
> '*to': 'uint16',
> '*ipv4': 'bool',
> '*ipv6': 'bool' } }
Thinking out loud: Do we even need a 'numeric' field? If we could
create an alternate type that distinguishes between a 'str' (name, DNS
resolution required) and an 'int' (numeric, skip DNS), then we don't
need a field. Except that an 'int' for IPv4 addresses is awkward, and
an 'int' for IPv6 addresses in insufficient - so even when the address
is numeric, you STILL have to pass it in as 'str'. Okay, experiment
failed, your interface seems like the correct thing to do.
> diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
> index fe1d07a..6f1c10a 100644
> --- a/util/qemu-sockets.c
> +++ b/util/qemu-sockets.c
> @@ -141,6 +141,9 @@ static int inet_listen_saddr(InetSocketAddress *saddr,
>
> memset(&ai,0, sizeof(ai));
> ai.ai_flags = AI_PASSIVE;
> + if (saddr->numeric) {
if (saddr->has_numeric && saddr->numeric)
> + ai.ai_flags |= AI_NUMERICHOST | AI_NUMERICSERV;
> + }
> ai.ai_family = inet_ai_family_from_address(saddr, &err);
> ai.ai_socktype = SOCK_STREAM;
>
>
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [PATCH 0/8] io: enable DNS resolving separately of socket create, Daniel P. Berrange, 2017/01/05
- [Qemu-devel] [PATCH 2/8] io: stop incrementing reference in qio_task_get_source, Daniel P. Berrange, 2017/01/05
- [Qemu-devel] [PATCH 3/8] io: fix typo in docs for QIOTask, Daniel P. Berrange, 2017/01/05
- [Qemu-devel] [PATCH 1/8] sockets: add ability to disable DNS resolution for InetSocketAddress, Daniel P. Berrange, 2017/01/05
- Re: [Qemu-devel] [PATCH 1/8] sockets: add ability to disable DNS resolution for InetSocketAddress,
Eric Blake <=
- [Qemu-devel] [PATCH 4/8] io: add ability to associate an opaque "result" with with a task, Daniel P. Berrange, 2017/01/05
- [Qemu-devel] [PATCH 5/8] io: add ability to associate an error with a task, Daniel P. Berrange, 2017/01/05
- [Qemu-devel] [PATCH 6/8] io: change the QIOTask callback signature, Daniel P. Berrange, 2017/01/05