[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH 06/12] qemu: block: Add JSON props generator for iSCSI protocol



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 redhat com>
>
> ---
> +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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]