QEMU Monitor Protocol Events
                   ============================

BLOCK_IO_ERROR
--------------

Emitted when a disk I/O error occurs.

Data:

- "device": device name (json-string)
- "operation": I/O operation (json-string, "read" or "write")
- "action": action that has been taken, it's one of the following (json-string):
    "ignore": error has been ignored
    "report": error has been reported to the device
    "stop": error caused VM to be stopped

Example:

{ "event": "BLOCK_IO_ERROR",
    "data": { "device": "ide0-hd1",
              "operation": "write",
              "action": "stop" },
    "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }

Note: If action is "stop", a STOP event will eventually follow the
BLOCK_IO_ERROR event.

RESET
-----

Emitted when the Virtual Machine is reseted.

Data: None.

Example:

{ "event": "RESET",
    "timestamp": { "seconds": 1267041653, "microseconds": 9518 } }

RESUME
------

Emitted when the Virtual Machine resumes execution.

Data: None.

Example:

{ "event": "RESUME",
    "timestamp": { "seconds": 1271770767, "microseconds": 582542 } }

RTC_CHANGE
----------

Emitted when the guest changes the RTC time.

Data:

- "offset": delta against the host UTC in seconds (json-number)

Example:

{ "event": "RTC_CHANGE",
    "data": { "offset": 78 },
    "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }

SHUTDOWN
--------

Emitted when the Virtual Machine is powered down.

Data: None.

Example:

{ "event": "SHUTDOWN",
    "timestamp": { "seconds": 1267040730, "microseconds": 682951 } }

Note: If the command-line option "-no-shutdown" has been specified, a STOP
event will eventually follow the SHUTDOWN event.

STOP
----

Emitted when the Virtual Machine is stopped.

Data: None.

Example:

{ "event": "STOP",
    "timestamp": { "seconds": 1267041730, "microseconds": 281295 } }

VNC_CONNECTED
-------------

Emitted when a VNC client establishes a connection.

Data:

- "server": Server information (json-object)
  - "host": IP address (json-string)
  - "service": port number (json-string)
  - "family": address family (json-string, "ipv4" or "ipv6")
  - "auth": authentication method (json-string, optional)
- "client": Client information (json-object)
  - "host": IP address (json-string)
  - "service": port number (json-string)
  - "family": address family (json-string, "ipv4" or "ipv6")

Example:

{ "event": "VNC_CONNECTED",
    "data": {
        "server": { "auth": "sasl", "family": "ipv4",
                    "service": "5901", "host": "0.0.0.0" },
        "client": { "family": "ipv4", "service": "58425",
                    "host": "127.0.0.1" } },
    "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }


Note: This event is emitted before any authentication takes place, thus
the authentication ID is not provided.

VNC_DISCONNECTED
----------------

Emitted when the conection is closed.

Data:

- "server": Server information (json-object)
  - "host": IP address (json-string)
  - "service": port number (json-string)
  - "family": address family (json-string, "ipv4" or "ipv6")
  - "auth": authentication method (json-string, optional)
- "client": Client information (json-object)
  - "host": IP address (json-string)
  - "service": port number (json-string)
  - "family": address family (json-string, "ipv4" or "ipv6")
  - "x509_dname": TLS dname (json-string, optional)
  - "sasl_username": SASL username (json-string, optional)

Example:

{ "event": "VNC_DISCONNECTED",
    "data": {
        "server": { "auth": "sasl", "family": "ipv4",
                    "service": "5901", "host": "0.0.0.0" },
        "client": { "family": "ipv4", "service": "58425",
                    "host": "127.0.0.1", "sasl_username": "luiz" } },
    "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }

VNC_INITIALIZED
---------------

Emitted after authentication takes place (if any) and the VNC session is
made active.

Data:

- "server": Server information (json-object)
  - "host": IP address (json-string)
  - "service": port number (json-string)
  - "family": address family (json-string, "ipv4" or "ipv6")
  - "auth": authentication method (json-string, optional)
- "client": Client information (json-object)
  - "host": IP address (json-string)
  - "service": port number (json-string)
  - "family": address family (json-string, "ipv4" or "ipv6")
  - "x509_dname": TLS dname (json-string, optional)
  - "sasl_username": SASL username (json-string, optional)

Example:

{ "event": "VNC_INITIALIZED",
    "data": {
        "server": { "auth": "sasl", "family": "ipv4",
                    "service": "5901", "host": "0.0.0.0"},
        "client": { "family": "ipv4", "service": "46089",
                    "host": "127.0.0.1", "sasl_username": "luiz" } },
        "timestamp": { "seconds": 1263475302, "microseconds": 150772 } }

SPICE_CONNECTED, SPICE_DISCONNECTED
-----------------------------------

Emitted when a SPICE client connects or disconnects.

Data:

- "server": Server information (json-object)
  - "host": IP address (json-string)
  - "port": port number (json-string)
  - "family": address family (json-string, "ipv4" or "ipv6")
- "client": Client information (json-object)
  - "host": IP address (json-string)
  - "port": port number (json-string)
  - "family": address family (json-string, "ipv4" or "ipv6")

Example:

{ "timestamp": {"seconds": 1290688046, "microseconds": 388707},
  "event": "SPICE_CONNECTED",
  "data": {
    "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
    "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
}}


SPICE_INITIALIZED
-----------------

Emitted after initial handshake and authentication takes place (if any)
and the SPICE channel is up'n'running

Data:

- "server": Server information (json-object)
  - "host": IP address (json-string)
  - "port": port number (json-string)
  - "family": address family (json-string, "ipv4" or "ipv6")
  - "auth": authentication method (json-string, optional)
- "client": Client information (json-object)
  - "host": IP address (json-string)
  - "port": port number (json-string)
  - "family": address family (json-string, "ipv4" or "ipv6")
  - "connection-id": spice connection id.  All channels with the same id
                     belong to the same spice session (json-int)
  - "channel-type": channel type.  "1" is the main control channel, filter for
                    this one if you want track spice sessions only (json-int)
  - "channel-id": channel id.  Usually "0", might be different needed when
                  multiple channels of the same type exist, such as multiple
                  display channels in a multihead setup (json-int)
  - "tls": whevener the channel is encrypted (json-bool)

Example:

{ "timestamp": {"seconds": 1290688046, "microseconds": 417172},
  "event": "SPICE_INITIALIZED",
  "data": {"server": {"auth": "spice", "port": "5921",
                      "family": "ipv4", "host": "127.0.0.1"},
           "client": {"port": "49004", "family": "ipv4", "channel-type": 3,
                      "connection-id": 1804289383, "host": "127.0.0.1",
                      "channel-id": 0, "tls": true}
}}


WATCHDOG
--------

Emitted when the watchdog device's timer is expired.

Data:

- "action": Action that has been taken, it's one of the following (json-string):
            "reset", "shutdown", "poweroff", "pause", "debug", or "none"

Example:

{ "event": "WATCHDOG",
     "data": { "action": "reset" },
     "timestamp": { "seconds": 1267061043, "microseconds": 959568 } }

Note: If action is "reset", "shutdown", or "pause" the WATCHDOG event is
followed respectively by the RESET, SHUTDOWN, or STOP events.