提交 49ed98a4 编写于 作者: P Peter Krempa

util: storage: Split out parsing of TCP network host from JSON pseudoprotocol

Few backing protocols support only TCP. Split out the function which
will correspond to parsing qemu's InetSocketAddressBase.
上级 1f915d40
......@@ -2794,13 +2794,35 @@ virStorageSourceParseBackingJSONUri(virStorageSourcePtr src,
}
static int
virStorageSourceParseBackingJSONInetSocketAddress(virStorageNetHostDefPtr host,
virJSONValuePtr json)
{
const char *hostname = virJSONValueObjectGetString(json, "host");
const char *port = virJSONValueObjectGetString(json, "port");
if (!hostname) {
virReportError(VIR_ERR_INVALID_ARG, "%s",
_("missing hostname for tcp backing server in "
"JSON backing volume definition"));
return -1;
}
host->transport = VIR_STORAGE_NET_HOST_TRANS_TCP;
if (VIR_STRDUP(host->name, hostname) < 0 ||
VIR_STRDUP(host->port, port) < 0)
return -1;
return 0;
}
static int
virStorageSourceParseBackingJSONSocketAddress(virStorageNetHostDefPtr host,
virJSONValuePtr json)
{
const char *type = virJSONValueObjectGetString(json, "type");
const char *hostname = virJSONValueObjectGetString(json, "host");
const char *port = virJSONValueObjectGetString(json, "port");
const char *socket = virJSONValueObjectGetString(json, "socket");
if (!type) {
......@@ -2811,18 +2833,8 @@ virStorageSourceParseBackingJSONSocketAddress(virStorageNetHostDefPtr host,
}
if (STREQ(type, "tcp") || STREQ(type, "inet")) {
host->transport = VIR_STORAGE_NET_HOST_TRANS_TCP;
return virStorageSourceParseBackingJSONInetSocketAddress(host, json);
if (!hostname) {
virReportError(VIR_ERR_INVALID_ARG, "%s",
_("missing hostname for tcp backing server in "
"JSON backing volume definition"));
return -1;
}
if (VIR_STRDUP(host->name, hostname) < 0 ||
VIR_STRDUP(host->port, port) < 0)
return -1;
} else if (STREQ(type, "unix")) {
host->transport = VIR_STORAGE_NET_HOST_TRANS_UNIX;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册