1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#ifndef QEMU_SPICE_H
19#define QEMU_SPICE_H
20
21#include "qapi/error.h"
22
23#ifdef CONFIG_SPICE
24
25#include <spice.h>
26#include "qemu/config-file.h"
27
28extern int using_spice;
29
30void qemu_spice_init(void);
31void qemu_spice_input_init(void);
32void qemu_spice_audio_init(void);
33void qemu_spice_display_init(void);
34int qemu_spice_display_add_client(int csock, int skipauth, int tls);
35int qemu_spice_add_interface(SpiceBaseInstance *sin);
36bool qemu_spice_have_display_interface(QemuConsole *con);
37int qemu_spice_add_display_interface(QXLInstance *qxlin, QemuConsole *con);
38int qemu_spice_set_passwd(const char *passwd,
39 bool fail_if_connected, bool disconnect_if_connected);
40int qemu_spice_set_pw_expire(time_t expires);
41int qemu_spice_migrate_info(const char *hostname, int port, int tls_port,
42 const char *subject);
43
44#if !defined(SPICE_SERVER_VERSION) || (SPICE_SERVER_VERSION < 0xc06)
45#define SPICE_NEEDS_SET_MM_TIME 1
46#else
47#define SPICE_NEEDS_SET_MM_TIME 0
48#endif
49
50#if SPICE_SERVER_VERSION >= 0x000c02
51void qemu_spice_register_ports(void);
52#else
53static inline Chardev *qemu_chr_open_spice_port(const char *name)
54{ return NULL; }
55#endif
56
57#else
58
59#include "qemu/error-report.h"
60
61#define using_spice 0
62#define spice_displays 0
63static inline int qemu_spice_set_passwd(const char *passwd,
64 bool fail_if_connected,
65 bool disconnect_if_connected)
66{
67 return -1;
68}
69static inline int qemu_spice_set_pw_expire(time_t expires)
70{
71 return -1;
72}
73static inline int qemu_spice_migrate_info(const char *h, int p, int t,
74 const char *s)
75{
76 return -1;
77}
78
79static inline int qemu_spice_display_add_client(int csock, int skipauth,
80 int tls)
81{
82 return -1;
83}
84
85static inline void qemu_spice_display_init(void)
86{
87
88 error_report("spice support is disabled");
89 abort();
90}
91
92static inline void qemu_spice_init(void)
93{
94}
95
96#endif
97
98static inline bool qemu_using_spice(Error **errp)
99{
100 if (!using_spice) {
101 error_set(errp, ERROR_CLASS_DEVICE_NOT_ACTIVE,
102 "SPICE is not in use");
103 return false;
104 }
105 return true;
106}
107
108#endif
109