[libvirt] NBD drives with literal IPv6 addresses or hostnames starting with a digit

Hello, since qemu's commit v1.4.0-736-gf17c90b [1]: nbd: Keep hostname and port separate * literal IPv6 addresses no longer work in nbd URIs, because getaddrinfo is called with the surrounding brackets: $ qemu-system-x86_64 -drive file=nbd://[::1]:1234/quack qemu-system-x86_64: -drive file=nbd://[::1]:1234/quack: address resolution failed for [::1]:1234: Name or service not known * hostnames starting with a digit now work in nbd URIs. Before that, or with the non-URI syntax, they fail because inet_parse assumes them to be literal IPv4 addresses: $ qemu-system-x86_64 -drive file=nbd:123flour:1234:exportname=gashunk qemu-system-x86_64: -drive file=nbd:123flour:1234:exportname=gashunk: error parsing IPv4 address '123flour:1234' In libvirt, we use the URI format on the command line only if the host contains ':', so hostnames starting with a digit still don't work. Migration with NBD and a literal IPv6 address doesn't work either, but that's purely libvirt's fault, as we don't escape it with brackets. I've just posted a patch for that. [2] Jan [1] http://git.qemu.org/?p=qemu.git;a=commitdiff;h=f17c90b [2] https://www.redhat.com/archives/libvir-list/2013-May/msg02022.html

On Fri, May 31, 2013 at 01:38:51PM +0200, Ján Tomko wrote:
Hello,
since qemu's commit v1.4.0-736-gf17c90b [1]: nbd: Keep hostname and port separate
* literal IPv6 addresses no longer work in nbd URIs, because getaddrinfo is called with the surrounding brackets: $ qemu-system-x86_64 -drive file=nbd://[::1]:1234/quack qemu-system-x86_64: -drive file=nbd://[::1]:1234/quack: address resolution failed for [::1]:1234: Name or service not known
* hostnames starting with a digit now work in nbd URIs. Before that, or with the non-URI syntax, they fail because inet_parse assumes them to be literal IPv4 addresses: $ qemu-system-x86_64 -drive file=nbd:123flour:1234:exportname=gashunk qemu-system-x86_64: -drive file=nbd:123flour:1234:exportname=gashunk: error parsing IPv4 address '123flour:1234'
In libvirt, we use the URI format on the command line only if the host contains ':', so hostnames starting with a digit still don't work.
Migration with NBD and a literal IPv6 address doesn't work either, but that's purely libvirt's fault, as we don't escape it with brackets. I've just posted a patch for that. [2]
Jan
[1] http://git.qemu.org/?p=qemu.git;a=commitdiff;h=f17c90b [2] https://www.redhat.com/archives/libvir-list/2013-May/msg02022.html
CCing Kevin who authored v1.4.0-736-gf17c90b. Stefan

On 06/04/2013 02:19 PM, Stefan Hajnoczi wrote:
CCing Kevin who authored v1.4.0-736-gf17c90b.
Stefan
I've already posted patches for both issues: http://lists.nongnu.org/archive/html/qemu-devel/2013-06/msg00227.html Jan
participants (2)
-
Ján Tomko
-
Stefan Hajnoczi