mirror of https://gitee.com/openkylin/qemu.git
Merge remote-tracking branch 'bonzini/nbd-next' into staging
# By Ján Tomko # Via Paolo Bonzini * bonzini/nbd-next: nbd: strip braces from literal IPv6 address in URI qemu-socket: allow hostnames starting with a digit
This commit is contained in:
commit
7d8f4b34a4
11
block/nbd.c
11
block/nbd.c
|
@ -118,13 +118,22 @@ static int nbd_parse_uri(const char *filename, QDict *options)
|
|||
}
|
||||
qdict_put(options, "path", qstring_from_str(qp->p[0].value));
|
||||
} else {
|
||||
QString *host;
|
||||
/* nbd[+tcp]://host[:port]/export */
|
||||
if (!uri->server) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
qdict_put(options, "host", qstring_from_str(uri->server));
|
||||
/* strip braces from literal IPv6 address */
|
||||
if (uri->server[0] == '[') {
|
||||
host = qstring_from_substr(uri->server, 1,
|
||||
strlen(uri->server) - 2);
|
||||
} else {
|
||||
host = qstring_from_str(uri->server);
|
||||
}
|
||||
|
||||
qdict_put(options, "host", host);
|
||||
if (uri->port) {
|
||||
char* port_str = g_strdup_printf("%d", uri->port);
|
||||
qdict_put(options, "port", qstring_from_str(port_str));
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
|
||||
#include "monitor/monitor.h"
|
||||
#include "qemu/sockets.h"
|
||||
#include "qemu-common.h" /* for qemu_isdigit */
|
||||
#include "qemu/main-loop.h"
|
||||
|
||||
#ifndef AI_ADDRCONFIG
|
||||
|
@ -511,19 +510,15 @@ InetSocketAddress *inet_parse(const char *str, Error **errp)
|
|||
goto fail;
|
||||
}
|
||||
addr->ipv6 = addr->has_ipv6 = true;
|
||||
} else if (qemu_isdigit(str[0])) {
|
||||
/* IPv4 addr */
|
||||
if (2 != sscanf(str, "%64[0-9.]:%32[^,]%n", host, port, &pos)) {
|
||||
error_setg(errp, "error parsing IPv4 address '%s'", str);
|
||||
goto fail;
|
||||
}
|
||||
addr->ipv4 = addr->has_ipv4 = true;
|
||||
} else {
|
||||
/* hostname */
|
||||
/* hostname or IPv4 addr */
|
||||
if (2 != sscanf(str, "%64[^:]:%32[^,]%n", host, port, &pos)) {
|
||||
error_setg(errp, "error parsing address '%s'", str);
|
||||
goto fail;
|
||||
}
|
||||
if (host[strspn(host, "0123456789.")] == '\0') {
|
||||
addr->ipv4 = addr->has_ipv4 = true;
|
||||
}
|
||||
}
|
||||
|
||||
addr->host = g_strdup(host);
|
||||
|
|
Loading…
Reference in New Issue