mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-27 21:40:49 +00:00
fafa4d508b
Add QMP/HMP support for rocker devices. This is mostly for debugging purposes to see inside the device's tables and port configurations. Some examples: (qemu) info rocker sw1 name: sw1 id: 0x0000013512005452 ports: 4 (qemu) info rocker-ports sw1 ena/ speed/ auto port link duplex neg? sw1.1 up 10G FD No sw1.2 up 10G FD No sw1.3 !ena 10G FD No sw1.4 !ena 10G FD No (qemu) info rocker-of-dpa-flows sw1 prio tbl hits key(mask) --> actions 2 60 pport 1 vlan 1 LLDP src 00:02:00:00:02:00 dst 01:80:c2:00:00:0e 2 60 pport 1 vlan 1 ARP src 00:02:00:00:02:00 dst 00:02:00:00:03:00 2 60 pport 2 vlan 2 IPv6 src 00:02:00:00:03:00 dst 33:33:ff:00:00:02 proto 58 3 50 vlan 2 dst 33:33:ff:00:00:02 --> write group 0x32000001 goto tbl 60 2 60 pport 2 vlan 2 IPv6 src 00:02:00:00:03:00 dst 33:33:ff:00:03:00 proto 58 3 50 1 vlan 2 dst 33:33:ff:00:03:00 --> write group 0x32000001 goto tbl 60 2 60 pport 2 vlan 2 ARP src 00:02:00:00:03:00 dst 00:02:00:00:02:00 3 50 2 vlan 2 dst 00:02:00:00:02:00 --> write group 0x02000001 goto tbl 60 2 60 1 pport 2 vlan 2 IP src 00:02:00:00:03:00 dst 00:02:00:00:02:00 proto 1 3 50 2 vlan 1 dst 00:02:00:00:03:00 --> write group 0x01000002 goto tbl 60 2 60 1 pport 1 vlan 1 IP src 00:02:00:00:02:00 dst 00:02:00:00:03:00 proto 1 2 60 pport 1 vlan 1 IPv6 src 00:02:00:00:02:00 dst 33:33:ff:00:00:01 proto 58 3 50 vlan 1 dst 33:33:ff:00:00:01 --> write group 0x31000000 goto tbl 60 2 60 pport 1 vlan 1 IPv6 src 00:02:00:00:02:00 dst 33:33:ff:00:02:00 proto 58 3 50 1 vlan 1 dst 33:33:ff:00:02:00 --> write group 0x31000000 goto tbl 60 1 60 173 pport 2 vlan 2 LLDP src <any> dst 01:80:c2:00:00:0e --> write group 0x02000000 1 60 6 pport 2 vlan 2 IPv6 src <any> dst <any> --> write group 0x02000000 1 60 174 pport 1 vlan 1 LLDP src <any> dst 01:80:c2:00:00:0e --> write group 0x01000000 1 60 174 pport 2 vlan 2 IP src <any> dst <any> --> write group 0x02000000 1 60 6 pport 1 vlan 1 IPv6 src <any> dst <any> --> write group 0x01000000 1 60 181 pport 2 vlan 2 ARP src <any> dst <any> --> write group 0x02000000 1 10 715 pport 2 --> apply new vlan 2 goto tbl 20 1 60 177 pport 1 vlan 1 ARP src <any> dst <any> --> write group 0x01000000 1 60 174 pport 1 vlan 1 IP src <any> dst <any> --> write group 0x01000000 1 10 717 pport 1 --> apply new vlan 1 goto tbl 20 1 0 1432 pport 0(0xffff) --> goto tbl 10 (qemu) info rocker-of-dpa-groups sw1 id (decode) --> buckets 0x32000001 (type L2 multicast vlan 2 index 1) --> groups [0x02000001,0x02000000] 0x02000001 (type L2 interface vlan 2 pport 1) --> pop vlan out pport 1 0x01000002 (type L2 interface vlan 1 pport 2) --> pop vlan out pport 2 0x02000000 (type L2 interface vlan 2 pport 0) --> pop vlan out pport 0 0x01000000 (type L2 interface vlan 1 pport 0) --> pop vlan out pport 0 0x31000000 (type L2 multicast vlan 1 index 0) --> groups [0x01000002,0x01000000] [Added "query-" prefixes to rocker.json commands as suggested by Eric Blake <eblake@redhat.com>. --Stefan] Signed-off-by: Scott Feldman <sfeldma@gmail.com> Signed-off-by: Jiri Pirko <jiri@resnulli.us> Message-id: 1433985681-56138-5-git-send-email-sfeldma@gmail.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
133 lines
6.8 KiB
C
133 lines
6.8 KiB
C
/*
|
|
* Human Monitor Interface
|
|
*
|
|
* Copyright IBM, Corp. 2011
|
|
*
|
|
* Authors:
|
|
* Anthony Liguori <aliguori@us.ibm.com>
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2. See
|
|
* the COPYING file in the top-level directory.
|
|
*
|
|
*/
|
|
|
|
#ifndef HMP_H
|
|
#define HMP_H
|
|
|
|
#include "qemu-common.h"
|
|
#include "qemu/readline.h"
|
|
#include "qapi-types.h"
|
|
#include "qapi/qmp/qdict.h"
|
|
|
|
void hmp_info_name(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_version(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_kvm(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_status(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_uuid(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_chardev(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_mice(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_migrate(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_migrate_capabilities(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_migrate_parameters(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_migrate_cache_size(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_cpus(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_block(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_blockstats(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_vnc(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_spice(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_balloon(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_pci(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_block_jobs(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_tpm(Monitor *mon, const QDict *qdict);
|
|
void hmp_quit(Monitor *mon, const QDict *qdict);
|
|
void hmp_stop(Monitor *mon, const QDict *qdict);
|
|
void hmp_system_reset(Monitor *mon, const QDict *qdict);
|
|
void hmp_system_powerdown(Monitor *mon, const QDict *qdict);
|
|
void hmp_cpu(Monitor *mon, const QDict *qdict);
|
|
void hmp_memsave(Monitor *mon, const QDict *qdict);
|
|
void hmp_pmemsave(Monitor *mon, const QDict *qdict);
|
|
void hmp_ringbuf_write(Monitor *mon, const QDict *qdict);
|
|
void hmp_ringbuf_read(Monitor *mon, const QDict *qdict);
|
|
void hmp_cont(Monitor *mon, const QDict *qdict);
|
|
void hmp_system_wakeup(Monitor *mon, const QDict *qdict);
|
|
void hmp_nmi(Monitor *mon, const QDict *qdict);
|
|
void hmp_set_link(Monitor *mon, const QDict *qdict);
|
|
void hmp_block_passwd(Monitor *mon, const QDict *qdict);
|
|
void hmp_balloon(Monitor *mon, const QDict *qdict);
|
|
void hmp_block_resize(Monitor *mon, const QDict *qdict);
|
|
void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict);
|
|
void hmp_snapshot_blkdev_internal(Monitor *mon, const QDict *qdict);
|
|
void hmp_snapshot_delete_blkdev_internal(Monitor *mon, const QDict *qdict);
|
|
void hmp_drive_mirror(Monitor *mon, const QDict *qdict);
|
|
void hmp_drive_backup(Monitor *mon, const QDict *qdict);
|
|
void hmp_migrate_cancel(Monitor *mon, const QDict *qdict);
|
|
void hmp_migrate_incoming(Monitor *mon, const QDict *qdict);
|
|
void hmp_migrate_set_downtime(Monitor *mon, const QDict *qdict);
|
|
void hmp_migrate_set_speed(Monitor *mon, const QDict *qdict);
|
|
void hmp_migrate_set_capability(Monitor *mon, const QDict *qdict);
|
|
void hmp_migrate_set_parameter(Monitor *mon, const QDict *qdict);
|
|
void hmp_migrate_set_cache_size(Monitor *mon, const QDict *qdict);
|
|
void hmp_client_migrate_info(Monitor *mon, const QDict *qdict);
|
|
void hmp_set_password(Monitor *mon, const QDict *qdict);
|
|
void hmp_expire_password(Monitor *mon, const QDict *qdict);
|
|
void hmp_eject(Monitor *mon, const QDict *qdict);
|
|
void hmp_change(Monitor *mon, const QDict *qdict);
|
|
void hmp_block_set_io_throttle(Monitor *mon, const QDict *qdict);
|
|
void hmp_block_stream(Monitor *mon, const QDict *qdict);
|
|
void hmp_block_job_set_speed(Monitor *mon, const QDict *qdict);
|
|
void hmp_block_job_cancel(Monitor *mon, const QDict *qdict);
|
|
void hmp_block_job_pause(Monitor *mon, const QDict *qdict);
|
|
void hmp_block_job_resume(Monitor *mon, const QDict *qdict);
|
|
void hmp_block_job_complete(Monitor *mon, const QDict *qdict);
|
|
void hmp_migrate(Monitor *mon, const QDict *qdict);
|
|
void hmp_device_add(Monitor *mon, const QDict *qdict);
|
|
void hmp_device_del(Monitor *mon, const QDict *qdict);
|
|
void hmp_dump_guest_memory(Monitor *mon, const QDict *qdict);
|
|
void hmp_netdev_add(Monitor *mon, const QDict *qdict);
|
|
void hmp_netdev_del(Monitor *mon, const QDict *qdict);
|
|
void hmp_getfd(Monitor *mon, const QDict *qdict);
|
|
void hmp_closefd(Monitor *mon, const QDict *qdict);
|
|
void hmp_sendkey(Monitor *mon, const QDict *qdict);
|
|
void hmp_screendump(Monitor *mon, const QDict *qdict);
|
|
void hmp_nbd_server_start(Monitor *mon, const QDict *qdict);
|
|
void hmp_nbd_server_add(Monitor *mon, const QDict *qdict);
|
|
void hmp_nbd_server_stop(Monitor *mon, const QDict *qdict);
|
|
void hmp_chardev_add(Monitor *mon, const QDict *qdict);
|
|
void hmp_chardev_remove(Monitor *mon, const QDict *qdict);
|
|
void hmp_qemu_io(Monitor *mon, const QDict *qdict);
|
|
void hmp_cpu_add(Monitor *mon, const QDict *qdict);
|
|
void hmp_object_add(Monitor *mon, const QDict *qdict);
|
|
void hmp_object_del(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_memdev(Monitor *mon, const QDict *qdict);
|
|
void hmp_info_memory_devices(Monitor *mon, const QDict *qdict);
|
|
void hmp_qom_list(Monitor *mon, const QDict *qdict);
|
|
void hmp_qom_set(Monitor *mon, const QDict *qdict);
|
|
void object_add_completion(ReadLineState *rs, int nb_args, const char *str);
|
|
void object_del_completion(ReadLineState *rs, int nb_args, const char *str);
|
|
void device_add_completion(ReadLineState *rs, int nb_args, const char *str);
|
|
void device_del_completion(ReadLineState *rs, int nb_args, const char *str);
|
|
void sendkey_completion(ReadLineState *rs, int nb_args, const char *str);
|
|
void chardev_remove_completion(ReadLineState *rs, int nb_args, const char *str);
|
|
void chardev_add_completion(ReadLineState *rs, int nb_args, const char *str);
|
|
void set_link_completion(ReadLineState *rs, int nb_args, const char *str);
|
|
void netdev_add_completion(ReadLineState *rs, int nb_args, const char *str);
|
|
void netdev_del_completion(ReadLineState *rs, int nb_args, const char *str);
|
|
void ringbuf_write_completion(ReadLineState *rs, int nb_args, const char *str);
|
|
void watchdog_action_completion(ReadLineState *rs, int nb_args,
|
|
const char *str);
|
|
void migrate_set_capability_completion(ReadLineState *rs, int nb_args,
|
|
const char *str);
|
|
void migrate_set_parameter_completion(ReadLineState *rs, int nb_args,
|
|
const char *str);
|
|
void host_net_add_completion(ReadLineState *rs, int nb_args, const char *str);
|
|
void host_net_remove_completion(ReadLineState *rs, int nb_args,
|
|
const char *str);
|
|
void delvm_completion(ReadLineState *rs, int nb_args, const char *str);
|
|
void loadvm_completion(ReadLineState *rs, int nb_args, const char *str);
|
|
void hmp_rocker(Monitor *mon, const QDict *qdict);
|
|
void hmp_rocker_ports(Monitor *mon, const QDict *qdict);
|
|
void hmp_rocker_of_dpa_flows(Monitor *mon, const QDict *qdict);
|
|
void hmp_rocker_of_dpa_groups(Monitor *mon, const QDict *qdict);
|
|
|
|
#endif
|