![Gerd Hoffmann](/assets/img/avatar_default.png)
This patch adds support for connection events to spice. The events are quite simliar to the vnc events. Unlike vnc spice uses multiple tcp channels though. qemu will report every single tcp connection (aka spice channel). If you want track spice sessions only you can filter for the main channel (channel-type == 1). Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
267 lines
7.6 KiB
Text
267 lines
7.6 KiB
Text
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.
|