diff options
author | Markus Armbruster <armbru@redhat.com> | 2017-03-28 10:55:59 +0200 |
---|---|---|
committer | Jeff Cody <jcody@redhat.com> | 2017-03-28 09:53:16 -0400 |
commit | eb87203b646c27938ecb11d7766c5c98f836241f (patch) | |
tree | e7de1b14ca289a33dac393235a0a206e66b1844d | |
parent | 142b9ca51d7260d20f6e87bd7f2020ac0a7d95d9 (diff) |
rbd: Reject -blockdev server.*.{numeric, to, ipv4, ipv6}
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 <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Jeff Cody <jcody@redhat.com>
Message-id: 1490691368-32099-2-git-send-email-armbru@redhat.com
Signed-off-by: Jeff Cody <jcody@redhat.com>
-rw-r--r-- | qapi-schema.json | 21 | ||||
-rw-r--r-- | qapi/block-core.json | 2 |
2 files changed, 15 insertions, 8 deletions
diff --git a/qapi-schema.json b/qapi-schema.json index 68a43274bf..b921994ae3 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -4051,19 +4051,27 @@ 'data': [ 'all', 'rx', 'tx' ] } ## -# @InetSocketAddress: -# -# Captures a socket address or address range in the Internet namespace. +# @InetSocketAddressBase: # # @host: host part of the address +# @port: port part of the address +## +{ 'struct': 'InetSocketAddressBase', + 'data': { + 'host': 'str', + 'port': 'str' } } + +## +# @InetSocketAddress: # -# @port: port part of the address, or lowest port if @to is present +# Captures a socket address or address range in the Internet namespace. # # @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 0f132fc995..5d2efe4ea7 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' } } |