On Tue, Nov 07, 2017 at 04:04:02PM +0100, Peter Krempa wrote:
On Sun, Nov 05, 2017 at 16:03:25 +0100, Ján Tomko wrote:On Fri, Nov 03, 2017 at 03:29:23PM +0100, Peter Krempa wrote: > From: John Ferlan <jferlan@xxxxxxxxxx> > > --- > +static virJSONValuePtr > +qemuBlockStorageSourceGetISCSIProps(virStorageSourcePtr src) > +{ [...] > + if (VIR_STRDUP(target, src->path) < 0) > + goto cleanup; > + > + /* Separate the target and lun */ > + if ((lunStr = strchr(target, '/'))) { > + *(lunStr++) = '\0'; > + if (virStrToLong_ui(lunStr, NULL, 10, &lun) < 0) { > + virReportError(VIR_ERR_INTERNAL_ERROR, > + _("cannot parse target for lunStr '%s'"), > + target); > + goto cleanup; > + } > + } > + > + /* combine host and port into portal */ > + if (virAsprintf(&portal, "%s:%u", src->hosts[0].name, src->hosts[0].port) < 0) > + goto cleanup; Can src->hosts[0].name possibly be a literal IPv6 address?Yes, you are right. How about the following diff squashed in? diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index ffe2892ab..428c0b465 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -742,8 +742,15 @@ qemuBlockStorageSourceGetISCSIProps(virStorageSourcePtr src) } /* combine host and port into portal */ - if (virAsprintf(&portal, "%s:%u", src->hosts[0].name, src->hosts[0].port) < 0) - goto cleanup; + if (virSocketAddrNumericFamily(src->hosts[0].name) == AF_INET6) { + if (virAsprintf(&portal, "[%s]:%u", + src->hosts[0].name, src->hosts[0].port) < 0) + goto cleanup; + } else { + if (virAsprintf(&portal, "%s:%u", + src->hosts[0].name, src->hosts[0].port) < 0) + goto cleanup; + } if (src->auth) { username = src->auth->username;
ACK
Also our parser is buggy. I'll send patches separately.
Thanks, patches are welcome. Jan
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list