From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33370) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1csal1-0000qm-Fw for qemu-devel@nongnu.org; Mon, 27 Mar 2017 15:56:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1csaky-0003lA-Dx for qemu-devel@nongnu.org; Mon, 27 Mar 2017 15:56:51 -0400 Received: from mx1.redhat.com ([209.132.183.28]:36260) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1csaky-0003kD-50 for qemu-devel@nongnu.org; Mon, 27 Mar 2017 15:56:48 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D08957F40B for ; Mon, 27 Mar 2017 19:56:46 +0000 (UTC) Date: Mon, 27 Mar 2017 15:56:45 -0400 From: Jeff Cody Message-ID: <20170327195645.GE22342@localhost.localdomain> References: <1490621195-2228-1-git-send-email-armbru@redhat.com> <1490621195-2228-2-git-send-email-armbru@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1490621195-2228-2-git-send-email-armbru@redhat.com> Subject: Re: [Qemu-devel] [PATCH RFC v3 for-2.9 01/11] rbd: Reject -blockdev server.*.{numeric, to, ipv4, ipv6} List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster Cc: qemu-devel@nongnu.org, jdurgin@redhat.com, kwolf@redhat.com, mreitz@redhat.com, eblake@redhat.com On Mon, Mar 27, 2017 at 03:26:25PM +0200, Markus Armbruster wrote: > We use InetSocketAddress in the QAPI schema. However, the code > doesn't use inet_connect_saddr(), but formats "host" and "port" into a > configuration string for rados_conf_set(). Thus, members "numeric", > "to", "ipv4" and "ipv6" are silently ignored. Not nice. Example: > > -blockdev rbd,node-name=nn,pool=p,image=i,server.0.host=h0,server.0.port=12345,server.0.ipv4=off > > Factor a suitable InetSocketAddressBase out of InetSocketAddress, and > use that. "numeric", "to", "ipv4" and "ipv6" are now rejected. > > Signed-off-by: Markus Armbruster > Reviewed-by: Eric Blake Reviewed-by: Jeff Cody > --- > qapi-schema.json | 21 ++++++++++++++------- > qapi/block-core.json | 2 +- > 2 files changed, 15 insertions(+), 8 deletions(-) > > diff --git a/qapi-schema.json b/qapi-schema.json > index 68a4327..b921994 100644 > --- a/qapi-schema.json > +++ b/qapi-schema.json > @@ -4051,19 +4051,27 @@ > 'data': [ 'all', 'rx', 'tx' ] } > > ## > +# @InetSocketAddressBase: > +# > +# @host: host part of the address > +# @port: port part of the address > +## > +{ 'struct': 'InetSocketAddressBase', > + 'data': { > + 'host': 'str', > + 'port': 'str' } } > + > +## > # @InetSocketAddress: > # > # Captures a socket address or address range in the Internet namespace. > # > -# @host: host part of the address > -# > -# @port: port part of the address, or lowest port if @to is present > -# > # @numeric: true if the host/port are guaranteed to be numeric, > # false if name resolution should be attempted. Defaults to false. > # (Since 2.9) > # > -# @to: highest port to try > +# @to: If present, this is range of possible addresses, with port > +# between @port and @to. > # > # @ipv4: whether to accept IPv4 addresses, default try both IPv4 and IPv6 > # > @@ -4072,9 +4080,8 @@ > # Since: 1.3 > ## > { 'struct': 'InetSocketAddress', > + 'base': 'InetSocketAddressBase', > 'data': { > - 'host': 'str', > - 'port': 'str', > '*numeric': 'bool', > '*to': 'uint16', > '*ipv4': 'bool', > diff --git a/qapi/block-core.json b/qapi/block-core.json > index 0f132fc..5d2efe4 100644 > --- a/qapi/block-core.json > +++ b/qapi/block-core.json > @@ -2652,7 +2652,7 @@ > '*conf': 'str', > '*snapshot': 'str', > '*user': 'str', > - '*server': ['InetSocketAddress'], > + '*server': ['InetSocketAddressBase'], > '*auth-supported': ['RbdAuthMethod'], > '*password-secret': 'str' } } > > -- > 2.7.4 >