monitor: Port handler_2 to use QDict This commit ports command handlers that receive two arguments to use the new monitor's dictionary. Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
diff --git a/hw/pci-hotplug.c b/hw/pci-hotplug.c index bf9a3c4..ba25be4 100644 --- a/hw/pci-hotplug.c +++ b/hw/pci-hotplug.c
@@ -48,7 +48,7 @@ return pci_nic_init(&nd_table[ret], "rtl8139", devaddr); } -void drive_hot_add(Monitor *mon, const char *pci_addr, const char *opts) +void drive_hot_add(Monitor *mon, const QDict *qdict) { int dom, pci_bus; unsigned slot; @@ -56,6 +56,8 @@ int success = 0; PCIDevice *dev; DriveInfo *dinfo; + const char *pci_addr = qdict_get_str(qdict, "pci_addr"); + const char *opts = qdict_get_str(qdict, "opts"); if (pci_read_devaddr(mon, pci_addr, &dom, &pci_bus, &slot)) { return;
diff --git a/migration.c b/migration.c index e6bcdb5..7f93e3f 100644 --- a/migration.c +++ b/migration.c
@@ -52,10 +52,12 @@ fprintf(stderr, "unknown migration protocol: %s\n", uri); } -void do_migrate(Monitor *mon, int detach, const char *uri) +void do_migrate(Monitor *mon, const QDict *qdict) { MigrationState *s = NULL; const char *p; + int detach = qdict_get_int(qdict, "detach"); + const char *uri = qdict_get_str(qdict, "uri"); if (strstart(uri, "tcp:", &p)) s = tcp_start_outgoing_migration(p, max_throttle, detach);
diff --git a/migration.h b/migration.h index f12f0ea..53b923d 100644 --- a/migration.h +++ b/migration.h
@@ -50,7 +50,7 @@ void qemu_start_incoming_migration(const char *uri); -void do_migrate(Monitor *mon, int detach, const char *uri); +void do_migrate(Monitor *mon, const QDict *qdict); void do_migrate_cancel(Monitor *mon, const QDict *qdict);
diff --git a/monitor.c b/monitor.c index b0aaada..d6b1d646 100644 --- a/monitor.c +++ b/monitor.c
@@ -452,9 +452,11 @@ return 0; } -static void do_eject(Monitor *mon, int force, const char *filename) +static void do_eject(Monitor *mon, const QDict *qdict) { BlockDriverState *bs; + int force = qdict_get_int(qdict, "force"); + const char *filename = qdict_get_str(qdict, "filename"); bs = bdrv_find(filename); if (!bs) { @@ -912,11 +914,13 @@ fclose(f); } -static void do_sum(Monitor *mon, uint32_t start, uint32_t size) +static void do_sum(Monitor *mon, const QDict *qdict) { uint32_t addr; uint8_t buf[1]; uint16_t sum; + uint32_t start = qdict_get_int(qdict, "start"); + uint32_t size = qdict_get_int(qdict, "size"); sum = 0; for(addr = start; addr < (start + size); addr++) { @@ -1600,9 +1604,10 @@ } } -static void do_acl_policy(Monitor *mon, const char *aclname, - const char *policy) +static void do_acl_policy(Monitor *mon, const QDict *qdict) { + const char *aclname = qdict_get_str(qdict, "aclname"); + const char *policy = qdict_get_str(qdict, "policy"); qemu_acl *acl = find_acl(mon, aclname); if (acl) { @@ -1647,8 +1652,10 @@ } } -static void do_acl_remove(Monitor *mon, const char *aclname, const char *match) +static void do_acl_remove(Monitor *mon, const QDict *qdict) { + const char *aclname = qdict_get_str(qdict, "aclname"); + const char *match = qdict_get_str(qdict, "match"); qemu_acl *acl = find_acl(mon, aclname); int ret; @@ -2572,7 +2579,6 @@ void *str_allocated[MAX_ARGS]; void *args[MAX_ARGS]; void (*handler_d)(Monitor *mon, const QDict *qdict); - void (*handler_2)(Monitor *mon, void *arg0, void *arg1); void (*handler_3)(Monitor *mon, void *arg0, void *arg1, void *arg2); void (*handler_4)(Monitor *mon, void *arg0, void *arg1, void *arg2, void *arg3); @@ -2865,13 +2871,10 @@ switch(nb_args) { case 0: case 1: + case 2: handler_d = cmd->handler; handler_d(mon, qdict); break; - case 2: - handler_2 = cmd->handler; - handler_2(mon, args[0], args[1]); - break; case 3: handler_3 = cmd->handler; handler_3(mon, args[0], args[1], args[2]);
diff --git a/net.c b/net.c index d21f0e9..e2513c2 100644 --- a/net.c +++ b/net.c
@@ -2822,8 +2822,11 @@ return 0; } -void net_host_device_add(Monitor *mon, const char *device, const char *opts) +void net_host_device_add(Monitor *mon, const QDict *qdict) { + const char *device = qdict_get_str(qdict, "device"); + const char *opts = qdict_get_try_str(qdict, "opts"); + if (!net_host_check_device(device)) { monitor_printf(mon, "invalid host network device %s\n", device); return; @@ -2833,9 +2836,11 @@ } } -void net_host_device_remove(Monitor *mon, int vlan_id, const char *device) +void net_host_device_remove(Monitor *mon, const QDict *qdict) { VLANClientState *vc; + int vlan_id = qdict_get_int(qdict, "vlan_id"); + const char *device = qdict_get_str(qdict, "device"); vc = qemu_find_vlan_client_by_name(mon, vlan_id, device); if (!vc) { @@ -2900,10 +2905,12 @@ } } -void do_set_link(Monitor *mon, const char *name, const char *up_or_down) +void do_set_link(Monitor *mon, const QDict *qdict) { VLANState *vlan; VLANClientState *vc = NULL; + const char *name = qdict_get_str(qdict, "name"); + const char *up_or_down = qdict_get_str(qdict, "up_or_down"); for (vlan = first_vlan; vlan != NULL; vlan = vlan->next) for (vc = vlan->first_client; vc != NULL; vc = vc->next)
diff --git a/net.h b/net.h index bab02f5..7fadc35 100644 --- a/net.h +++ b/net.h
@@ -3,6 +3,7 @@ #include "sys-queue.h" #include "qemu-common.h" +#include "qdict.h" /* VLANs support */ @@ -80,7 +81,7 @@ void qemu_handler_true(void *opaque); void do_info_network(Monitor *mon); -void do_set_link(Monitor *mon, const char *name, const char *up_or_down); +void do_set_link(Monitor *mon, const QDict *qdict); void do_info_usernet(Monitor *mon); @@ -145,8 +146,8 @@ void net_cleanup(void); void net_client_check(void); void net_set_boot_mask(int boot_mask); -void net_host_device_add(Monitor *mon, const char *device, const char *opts); -void net_host_device_remove(Monitor *mon, int vlan_id, const char *device); +void net_host_device_add(Monitor *mon, const QDict *qdict); +void net_host_device_remove(Monitor *mon, const QDict *qdict); #define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup" #define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown"
diff --git a/sysemu.h b/sysemu.h index d86f017..586d9d0 100644 --- a/sysemu.h +++ b/sysemu.h
@@ -212,7 +212,7 @@ /* pci-hotplug */ void pci_device_hot_add(Monitor *mon, const char *pci_addr, const char *type, const char *opts); -void drive_hot_add(Monitor *mon, const char *pci_addr, const char *opts); +void drive_hot_add(Monitor *mon, const QDict *qdict); void pci_device_hot_remove(Monitor *mon, const char *pci_addr); void do_pci_device_hot_remove(Monitor *mon, const QDict *qdict); void pci_device_hot_remove_success(int pcibus, int slot);