qemuAgentGetDiskAddress(virJSONValuePtr json)
{
virJSONValuePtr pci;
+ virJSONValuePtr ccw;
g_autoptr(qemuAgentDiskAddress) addr = NULL;
addr = g_new0(qemuAgentDiskAddress, 1);
GET_DISK_ADDR(pci, &addr->pci_controller.bus, "bus");
GET_DISK_ADDR(pci, &addr->pci_controller.slot, "slot");
GET_DISK_ADDR(pci, &addr->pci_controller.function, "function");
+
+ if ((ccw = virJSONValueObjectGet(json, "ccw-address"))) {
+ addr->has_ccw_address = true;
+ GET_DISK_ADDR(ccw, &addr->ccw_addr.cssid, "cssid");
+ if (addr->ccw_addr.cssid == 0) /* Guest CSSID 0 is 0xfe on host */
+ addr->ccw_addr.cssid = 0xfe;
+ GET_DISK_ADDR(ccw, &addr->ccw_addr.ssid, "ssid");
+ GET_DISK_ADDR(ccw, &addr->ccw_addr.devno, "devno");
+ }
#undef GET_DISK_ADDR
return g_steal_pointer(&addr);
unsigned int target;
unsigned int unit;
char *devnode;
+ bool has_ccw_address;
+ virDomainDeviceCCWAddress ccw_addr;
};
void qemuAgentDiskAddressFree(qemuAgentDiskAddressPtr addr);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuAgentDiskAddress, qemuAgentDiskAddressFree);