mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-12 15:52:55 +00:00
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.
This commit is contained in:
parent
1f915d40a2
commit
49ed98a457
@ -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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user