}
-int
-qemuMonitorGetTPMModels(qemuMonitor *mon,
- char ***tpmmodels)
-{
- VIR_DEBUG("tpmmodels=%p", tpmmodels);
-
- QEMU_CHECK_MONITOR(mon);
-
- return qemuMonitorJSONGetTPMModels(mon, tpmmodels);
-}
-
-
-int
-qemuMonitorGetTPMTypes(qemuMonitor *mon,
- char ***tpmtypes)
-{
- VIR_DEBUG("tpmtypes=%p", tpmtypes);
-
- QEMU_CHECK_MONITOR(mon);
-
- return qemuMonitorJSONGetTPMTypes(mon, tpmtypes);
-}
-
-
int
qemuMonitorAttachCharDev(qemuMonitor *mon,
virJSONValue **props,
int qemuMonitorBlockExportAdd(qemuMonitor *mon,
virJSONValue **props);
-int qemuMonitorGetTPMModels(qemuMonitor *mon,
- char ***tpmmodels);
-
-int qemuMonitorGetTPMTypes(qemuMonitor *mon,
- char ***tpmtypes);
-
int qemuMonitorAttachCharDev(qemuMonitor *mon,
virJSONValue **props,
char **ptypath);
}
-static int
-qemuMonitorJSONGetStringArray(qemuMonitor *mon,
- const char *qmpCmd,
- char ***array)
-{
- g_autoptr(virJSONValue) cmd = NULL;
- g_autoptr(virJSONValue) reply = NULL;
- virJSONValue *data;
-
- *array = NULL;
-
- if (!(cmd = qemuMonitorJSONMakeCommand(qmpCmd, NULL)))
- return -1;
-
- if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0)
- return -1;
-
- if (qemuMonitorJSONHasError(reply, "CommandNotFound"))
- return 0;
-
- if (!(data = qemuMonitorJSONGetReply(cmd, reply, VIR_JSON_TYPE_ARRAY)))
- return -1;
-
- if (!(*array = virJSONValueArrayToStringList(data)))
- return -1;
-
- return 0;
-}
-
-int qemuMonitorJSONGetTPMModels(qemuMonitor *mon,
- char ***tpmmodels)
-{
- return qemuMonitorJSONGetStringArray(mon, "query-tpm-models", tpmmodels);
-}
-
-
-int qemuMonitorJSONGetTPMTypes(qemuMonitor *mon,
- char ***tpmtypes)
-{
- return qemuMonitorJSONGetStringArray(mon, "query-tpm-types", tpmtypes);
-}
-
-
int
qemuMonitorJSONAttachCharDev(qemuMonitor *mon,
virJSONValue **props,
qemuMonitorJSONBlockExportAdd(qemuMonitor *mon,
virJSONValue **props);
-int
-qemuMonitorJSONGetTPMModels(qemuMonitor *mon,
- char ***tpmmodels)
- ATTRIBUTE_NONNULL(2);
-
-int
-qemuMonitorJSONGetTPMTypes(qemuMonitor *mon,
- char ***tpmtypes)
- ATTRIBUTE_NONNULL(2);
-
int
qemuMonitorJSONAttachCharDev(qemuMonitor *mon,
virJSONValue **props,
}
-static int
-testQemuMonitorJSONGetTPMModels(const void *opaque)
-{
- const testGenericData *data = opaque;
- virDomainXMLOption *xmlopt = data->xmlopt;
- g_auto(GStrv) tpmmodels = NULL;
- g_autoptr(qemuMonitorTest) test = NULL;
-
- if (!(test = qemuMonitorTestNewSchema(xmlopt, data->schema)))
- return -1;
-
- if (qemuMonitorTestAddItem(test, "query-tpm-models",
- "{ "
- " \"return\": [ "
- " \"passthrough\""
- " ]"
- "}") < 0)
- return -1;
-
- if (qemuMonitorGetTPMModels(qemuMonitorTestGetMonitor(test), &tpmmodels) < 0)
- return -1;
-
- if (g_strv_length(tpmmodels) != 1) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- "expected 1 tpm model");
- return -1;
- }
-
-#define CHECK(i, wantname) \
- do { \
- if (STRNEQ(tpmmodels[i], (wantname))) { \
- virReportError(VIR_ERR_INTERNAL_ERROR, \
- "name %s is not %s", \
- tpmmodels[i], (wantname)); \
- return -1; \
- } \
- } while (0)
-
- CHECK(0, "passthrough");
-
-#undef CHECK
-
- return 0;
-}
-
-
struct qemuMonitorJSONTestAttachChardevData {
virDomainChrSourceDef *chr;
const char *expectPty;
DO_TEST(GetVersion);
DO_TEST(GetMachines);
DO_TEST(GetCPUDefinitions);
- DO_TEST(GetTPMModels);
if (qemuMonitorJSONTestAttachChardev(driver.xmlopt, qapiData.schema) < 0)
ret = -1;
DO_TEST(DetachChardev);