return qemuMonitorAddDeviceWithFd(mon, devicestr, -1, NULL);
}
+
+/**
+ * qemuMonitorAddObject:
+ * @mon: Pointer to monitor object
+ * @type: Type name of object to add
+ * @objalias: Alias of the new object
+ * @props: Optional arguments for the given type. The object is consumed and
+ * should not be referenced by the caller after this function returns.
+ *
+ * Returns 0 on success -1 on error.
+ */
+int
+qemuMonitorAddObject(qemuMonitorPtr mon,
+ const char *type,
+ const char *objalias,
+ virJSONValuePtr props)
+{
+ VIR_DEBUG("mon=%p type=%s objalias=%s props=%p",
+ mon, type, objalias, props);
+ int ret = -1;
+
+ if (mon->json)
+ ret = qemuMonitorJSONAddObject(mon, type, objalias, props);
+ else
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("object adding requires JSON monitor"));
+
+ return ret;
+}
+
+
+int
+qemuMonitorDelObject(qemuMonitorPtr mon,
+ const char *objalias)
+{
+ VIR_DEBUG("mon=%p objalias=%s", mon, objalias);
+ int ret = -1;
+
+ if (mon->json)
+ ret = qemuMonitorJSONDelObject(mon, objalias);
+ else
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("object deletion requires JSON monitor"));
+
+ return ret;
+}
+
+
int qemuMonitorAddDrive(qemuMonitorPtr mon,
const char *drivestr)
{
int qemuMonitorDelDevice(qemuMonitorPtr mon,
const char *devalias);
+int qemuMonitorAddObject(qemuMonitorPtr mon,
+ const char *type,
+ const char *objalias,
+ virJSONValuePtr props);
+
+int qemuMonitorDelObject(qemuMonitorPtr mon,
+ const char *objalias);
+
int qemuMonitorAddDrive(qemuMonitorPtr mon,
const char *drivestr);
}
+int qemuMonitorJSONAddObject(qemuMonitorPtr mon,
+ const char *type,
+ const char *objalias,
+ virJSONValuePtr props)
+{
+ int ret = -1;
+ virJSONValuePtr cmd;
+ virJSONValuePtr reply = NULL;
+
+ cmd = qemuMonitorJSONMakeCommand("object-add",
+ "s:qom-type", type,
+ "s:id", objalias,
+ "A:props", props,
+ NULL);
+ if (!cmd)
+ goto cleanup;
+
+ /* @props is part of @cmd now. Avoid double free */
+ props = NULL;
+
+ ret = qemuMonitorJSONCommand(mon, cmd, &reply);
+
+ if (ret == 0)
+ ret = qemuMonitorJSONCheckError(cmd, reply);
+
+ cleanup:
+ virJSONValueFree(cmd);
+ virJSONValueFree(reply);
+ virJSONValueFree(props);
+ return ret;
+}
+
+
+int qemuMonitorJSONDelObject(qemuMonitorPtr mon,
+ const char *objalias)
+{
+ int ret;
+ virJSONValuePtr cmd;
+ virJSONValuePtr reply = NULL;
+
+ cmd = qemuMonitorJSONMakeCommand("object-del",
+ "s:id", objalias,
+ NULL);
+ if (!cmd)
+ return -1;
+
+ ret = qemuMonitorJSONCommand(mon, cmd, &reply);
+
+ if (ret == 0)
+ ret = qemuMonitorJSONCheckError(cmd, reply);
+
+ virJSONValueFree(cmd);
+ virJSONValueFree(reply);
+ return ret;
+}
+
+
int qemuMonitorJSONAddDrive(qemuMonitorPtr mon,
const char *drivestr)
{
int qemuMonitorJSONDelDevice(qemuMonitorPtr mon,
const char *devalias);
+int qemuMonitorJSONAddObject(qemuMonitorPtr mon,
+ const char *type,
+ const char *objalias,
+ virJSONValuePtr props);
+
+int qemuMonitorJSONDelObject(qemuMonitorPtr mon,
+ const char *objalias);
+
int qemuMonitorJSONAddDrive(qemuMonitorPtr mon,
const char *drivestr);