xref: /openbmc/qemu/docs/interop/barrier.rst (revision 526f1f3a5c6726e3d3b893d8063d31fda091c7e0)
1*6cb02f15SPeter MaydellBarrier client protocol
2*6cb02f15SPeter Maydell=======================
3*6cb02f15SPeter Maydell
4*6cb02f15SPeter MaydellQEMU's ``input-barrier`` device implements the client end of
5*6cb02f15SPeter Maydellthe KVM (Keyboard-Video-Mouse) software
6*6cb02f15SPeter Maydell`Barrier <https://github.com/debauchee/barrier>`__.
7*6cb02f15SPeter Maydell
8*6cb02f15SPeter MaydellThis document briefly describes the protocol as we implement it.
9*6cb02f15SPeter Maydell
10*6cb02f15SPeter MaydellMessage format
11*6cb02f15SPeter Maydell--------------
12*6cb02f15SPeter Maydell
13*6cb02f15SPeter MaydellMessage format between the server and client is in two parts:
14*6cb02f15SPeter Maydell
15*6cb02f15SPeter Maydell#. the payload length, a 32bit integer in network endianness
16*6cb02f15SPeter Maydell#. the payload
17*6cb02f15SPeter Maydell
18*6cb02f15SPeter MaydellThe payload starts with a 4byte string (without NUL) which is the
19*6cb02f15SPeter Maydellcommand. The first command between the server and the client
20*6cb02f15SPeter Maydellis the only command not encoded on 4 bytes ("Barrier").
21*6cb02f15SPeter MaydellThe remaining part of the payload is decoded according to the command.
22*6cb02f15SPeter Maydell
23*6cb02f15SPeter MaydellProtocol Description
24*6cb02f15SPeter Maydell--------------------
25*6cb02f15SPeter Maydell
26*6cb02f15SPeter MaydellThis comes from ``barrier/src/lib/barrier/protocol_types.h``.
27*6cb02f15SPeter Maydell
28*6cb02f15SPeter MaydellbarrierCmdHello  "Barrier"
29*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^
30*6cb02f15SPeter Maydell
31*6cb02f15SPeter MaydellDirection:
32*6cb02f15SPeter Maydell  server -> client
33*6cb02f15SPeter MaydellParameters:
34*6cb02f15SPeter Maydell  ``{ int16_t minor, int16_t major }``
35*6cb02f15SPeter MaydellDescription:
36*6cb02f15SPeter Maydell  Say hello to client
37*6cb02f15SPeter Maydell
38*6cb02f15SPeter Maydell  ``minor`` = protocol major version number supported by server
39*6cb02f15SPeter Maydell
40*6cb02f15SPeter Maydell  ``major`` = protocol minor version number supported by server
41*6cb02f15SPeter Maydell
42*6cb02f15SPeter MaydellbarrierCmdHelloBack  "Barrier"
43*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44*6cb02f15SPeter Maydell
45*6cb02f15SPeter MaydellDirection:
46*6cb02f15SPeter Maydell  client ->server
47*6cb02f15SPeter MaydellParameters:
48*6cb02f15SPeter Maydell  ``{ int16_t minor, int16_t major, char *name}``
49*6cb02f15SPeter MaydellDescription:
50*6cb02f15SPeter Maydell  Respond to hello from server
51*6cb02f15SPeter Maydell
52*6cb02f15SPeter Maydell  ``minor`` = protocol major version number supported by client
53*6cb02f15SPeter Maydell
54*6cb02f15SPeter Maydell  ``major`` = protocol minor version number supported by client
55*6cb02f15SPeter Maydell
56*6cb02f15SPeter Maydell  ``name``  = client name
57*6cb02f15SPeter Maydell
58*6cb02f15SPeter MaydellbarrierCmdDInfo  "DINF"
59*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^
60*6cb02f15SPeter Maydell
61*6cb02f15SPeter MaydellDirection:
62*6cb02f15SPeter Maydell  client ->server
63*6cb02f15SPeter MaydellParameters:
64*6cb02f15SPeter Maydell  ``{ int16_t x_origin, int16_t y_origin, int16_t width, int16_t height, int16_t x, int16_t y}``
65*6cb02f15SPeter MaydellDescription:
66*6cb02f15SPeter Maydell  The client screen must send this message in response to the
67*6cb02f15SPeter Maydell  barrierCmdQInfo message.  It must also send this message when the
68*6cb02f15SPeter Maydell  screen's resolution changes.  In this case, the client screen should
69*6cb02f15SPeter Maydell  ignore any barrierCmdDMouseMove messages until it receives a
70*6cb02f15SPeter Maydell  barrierCmdCInfoAck in order to prevent attempts to move the mouse off
71*6cb02f15SPeter Maydell  the new screen area.
72*6cb02f15SPeter Maydell
73*6cb02f15SPeter MaydellbarrierCmdCNoop  "CNOP"
74*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^
75*6cb02f15SPeter Maydell
76*6cb02f15SPeter MaydellDirection:
77*6cb02f15SPeter Maydell  client -> server
78*6cb02f15SPeter MaydellParameters:
79*6cb02f15SPeter Maydell  None
80*6cb02f15SPeter MaydellDescription:
81*6cb02f15SPeter Maydell  No operation
82*6cb02f15SPeter Maydell
83*6cb02f15SPeter MaydellbarrierCmdCClose "CBYE"
84*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^
85*6cb02f15SPeter Maydell
86*6cb02f15SPeter MaydellDirection:
87*6cb02f15SPeter Maydell  server -> client
88*6cb02f15SPeter MaydellParameters:
89*6cb02f15SPeter Maydell  None
90*6cb02f15SPeter MaydellDescription:
91*6cb02f15SPeter Maydell  Close connection
92*6cb02f15SPeter Maydell
93*6cb02f15SPeter MaydellbarrierCmdCEnter "CINN"
94*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^
95*6cb02f15SPeter Maydell
96*6cb02f15SPeter MaydellDirection:
97*6cb02f15SPeter Maydell  server -> client
98*6cb02f15SPeter MaydellParameters:
99*6cb02f15SPeter Maydell  ``{ int16_t x, int16_t y, int32_t seq, int16_t modifier }``
100*6cb02f15SPeter MaydellDescription:
101*6cb02f15SPeter Maydell  Enter screen.
102*6cb02f15SPeter Maydell
103*6cb02f15SPeter Maydell  ``x``, ``y``  = entering screen absolute coordinates
104*6cb02f15SPeter Maydell
105*6cb02f15SPeter Maydell  ``seq``  = sequence number, which is used to order messages between
106*6cb02f15SPeter Maydell  screens.  the secondary screen must return this number
107*6cb02f15SPeter Maydell  with some messages
108*6cb02f15SPeter Maydell
109*6cb02f15SPeter Maydell  ``modifier`` = modifier key mask.  this will have bits set for each
110*6cb02f15SPeter Maydell  toggle modifier key that is activated on entry to the
111*6cb02f15SPeter Maydell  screen.  the secondary screen should adjust its toggle
112*6cb02f15SPeter Maydell  modifiers to reflect that state.
113*6cb02f15SPeter Maydell
114*6cb02f15SPeter MaydellbarrierCmdCLeave "COUT"
115*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^
116*6cb02f15SPeter Maydell
117*6cb02f15SPeter MaydellDirection:
118*6cb02f15SPeter Maydell  server -> client
119*6cb02f15SPeter MaydellParameters:
120*6cb02f15SPeter Maydell  None
121*6cb02f15SPeter MaydellDescription:
122*6cb02f15SPeter Maydell  Leaving screen.  the secondary screen should send clipboard data in
123*6cb02f15SPeter Maydell  response to this message for those clipboards that it has grabbed
124*6cb02f15SPeter Maydell  (i.e. has sent a barrierCmdCClipboard for and has not received a
125*6cb02f15SPeter Maydell  barrierCmdCClipboard for with a greater sequence number) and that
126*6cb02f15SPeter Maydell  were grabbed or have changed since the last leave.
127*6cb02f15SPeter Maydell
128*6cb02f15SPeter MaydellbarrierCmdCClipboard "CCLP"
129*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^
130*6cb02f15SPeter Maydell
131*6cb02f15SPeter MaydellDirection:
132*6cb02f15SPeter Maydell  server -> client
133*6cb02f15SPeter MaydellParameters:
134*6cb02f15SPeter Maydell  ``{ int8_t id, int32_t seq }``
135*6cb02f15SPeter MaydellDescription:
136*6cb02f15SPeter Maydell  Grab clipboard. Sent by screen when some other app on that screen
137*6cb02f15SPeter Maydell  grabs a clipboard.
138*6cb02f15SPeter Maydell
139*6cb02f15SPeter Maydell  ``id``  = the clipboard identifier
140*6cb02f15SPeter Maydell
141*6cb02f15SPeter Maydell  ``seq`` = sequence number. Client must use the sequence number passed in
142*6cb02f15SPeter Maydell  the most recent barrierCmdCEnter.  the server always sends 0.
143*6cb02f15SPeter Maydell
144*6cb02f15SPeter MaydellbarrierCmdCScreenSaver   "CSEC"
145*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
146*6cb02f15SPeter Maydell
147*6cb02f15SPeter MaydellDirection:
148*6cb02f15SPeter Maydell  server -> client
149*6cb02f15SPeter MaydellParameters:
150*6cb02f15SPeter Maydell  ``{ int8_t started }``
151*6cb02f15SPeter MaydellDescription:
152*6cb02f15SPeter Maydell  Screensaver change.
153*6cb02f15SPeter Maydell
154*6cb02f15SPeter Maydell  ``started`` = Screensaver on primary has started (1) or closed (0)
155*6cb02f15SPeter Maydell
156*6cb02f15SPeter MaydellbarrierCmdCResetOptions  "CROP"
157*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
158*6cb02f15SPeter Maydell
159*6cb02f15SPeter MaydellDirection:
160*6cb02f15SPeter Maydell  server -> client
161*6cb02f15SPeter MaydellParameters:
162*6cb02f15SPeter Maydell  None
163*6cb02f15SPeter MaydellDescription:
164*6cb02f15SPeter Maydell  Reset options. Client should reset all of its options to their
165*6cb02f15SPeter Maydell  defaults.
166*6cb02f15SPeter Maydell
167*6cb02f15SPeter MaydellbarrierCmdCInfoAck   "CIAK"
168*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^
169*6cb02f15SPeter Maydell
170*6cb02f15SPeter MaydellDirection:
171*6cb02f15SPeter Maydell  server -> client
172*6cb02f15SPeter MaydellParameters:
173*6cb02f15SPeter Maydell  None
174*6cb02f15SPeter MaydellDescription:
175*6cb02f15SPeter Maydell  Resolution change acknowledgment. Sent by server in response to a
176*6cb02f15SPeter Maydell  client screen's barrierCmdDInfo. This is sent for every
177*6cb02f15SPeter Maydell  barrierCmdDInfo, whether or not the server had sent a barrierCmdQInfo.
178*6cb02f15SPeter Maydell
179*6cb02f15SPeter MaydellbarrierCmdCKeepAlive "CALV"
180*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^
181*6cb02f15SPeter Maydell
182*6cb02f15SPeter MaydellDirection:
183*6cb02f15SPeter Maydell  server -> client
184*6cb02f15SPeter MaydellParameters:
185*6cb02f15SPeter Maydell  None
186*6cb02f15SPeter MaydellDescription:
187*6cb02f15SPeter Maydell  Keep connection alive. Sent by the server periodically to verify
188*6cb02f15SPeter Maydell  that connections are still up and running.  clients must reply in
189*6cb02f15SPeter Maydell  kind on receipt.  if the server gets an error sending the message or
190*6cb02f15SPeter Maydell  does not receive a reply within a reasonable time then the server
191*6cb02f15SPeter Maydell  disconnects the client.  if the client doesn't receive these (or any
192*6cb02f15SPeter Maydell  message) periodically then it should disconnect from the server.  the
193*6cb02f15SPeter Maydell  appropriate interval is defined by an option.
194*6cb02f15SPeter Maydell
195*6cb02f15SPeter MaydellbarrierCmdDKeyDown   "DKDN"
196*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^
197*6cb02f15SPeter Maydell
198*6cb02f15SPeter MaydellDirection:
199*6cb02f15SPeter Maydell  server -> client
200*6cb02f15SPeter MaydellParameters:
201*6cb02f15SPeter Maydell  ``{ int16_t keyid, int16_t modifier [,int16_t button] }``
202*6cb02f15SPeter MaydellDescription:
203*6cb02f15SPeter Maydell  Key pressed.
204*6cb02f15SPeter Maydell
205*6cb02f15SPeter Maydell  ``keyid`` = X11 key id
206*6cb02f15SPeter Maydell
207*6cb02f15SPeter Maydell  ``modified`` = modified mask
208*6cb02f15SPeter Maydell
209*6cb02f15SPeter Maydell  ``button`` = X11 Xkb keycode (optional)
210*6cb02f15SPeter Maydell
211*6cb02f15SPeter MaydellbarrierCmdDKeyRepeat "DKRP"
212*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^
213*6cb02f15SPeter Maydell
214*6cb02f15SPeter MaydellDirection:
215*6cb02f15SPeter Maydell  server -> client
216*6cb02f15SPeter MaydellParameters:
217*6cb02f15SPeter Maydell  ``{ int16_t keyid, int16_t modifier, int16_t repeat [,int16_t button] }``
218*6cb02f15SPeter MaydellDescription:
219*6cb02f15SPeter Maydell  Key auto-repeat.
220*6cb02f15SPeter Maydell
221*6cb02f15SPeter Maydell  ``keyid`` = X11 key id
222*6cb02f15SPeter Maydell
223*6cb02f15SPeter Maydell  ``modified`` = modified mask
224*6cb02f15SPeter Maydell
225*6cb02f15SPeter Maydell  ``repeat``   = number of repeats
226*6cb02f15SPeter Maydell
227*6cb02f15SPeter Maydell  ``button``   = X11 Xkb keycode (optional)
228*6cb02f15SPeter Maydell
229*6cb02f15SPeter MaydellbarrierCmdDKeyUp "DKUP"
230*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^
231*6cb02f15SPeter Maydell
232*6cb02f15SPeter MaydellDirection:
233*6cb02f15SPeter Maydell  server -> client
234*6cb02f15SPeter MaydellParameters:
235*6cb02f15SPeter Maydell  ``{ int16_t keyid, int16_t modifier [,int16_t button] }``
236*6cb02f15SPeter MaydellDescription:
237*6cb02f15SPeter Maydell  Key released.
238*6cb02f15SPeter Maydell
239*6cb02f15SPeter Maydell  ``keyid`` = X11 key id
240*6cb02f15SPeter Maydell
241*6cb02f15SPeter Maydell  ``modified`` = modified mask
242*6cb02f15SPeter Maydell
243*6cb02f15SPeter Maydell  ``button`` = X11 Xkb keycode (optional)
244*6cb02f15SPeter Maydell
245*6cb02f15SPeter MaydellbarrierCmdDMouseDown "DMDN"
246*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^
247*6cb02f15SPeter Maydell
248*6cb02f15SPeter MaydellDirection:
249*6cb02f15SPeter Maydell  server -> client
250*6cb02f15SPeter MaydellParameters:
251*6cb02f15SPeter Maydell  ``{ int8_t button }``
252*6cb02f15SPeter MaydellDescription:
253*6cb02f15SPeter Maydell  Mouse button pressed.
254*6cb02f15SPeter Maydell
255*6cb02f15SPeter Maydell  ``button`` = button id
256*6cb02f15SPeter Maydell
257*6cb02f15SPeter MaydellbarrierCmdDMouseUp   "DMUP"
258*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^
259*6cb02f15SPeter Maydell
260*6cb02f15SPeter MaydellDirection:
261*6cb02f15SPeter Maydell  server -> client
262*6cb02f15SPeter MaydellParameters:
263*6cb02f15SPeter Maydell  ``{ int8_t button }``
264*6cb02f15SPeter MaydellDescription:
265*6cb02f15SPeter Maydell  Mouse button release.
266*6cb02f15SPeter Maydell
267*6cb02f15SPeter Maydell  ``button`` = button id
268*6cb02f15SPeter Maydell
269*6cb02f15SPeter MaydellbarrierCmdDMouseMove "DMMV"
270*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^
271*6cb02f15SPeter Maydell
272*6cb02f15SPeter MaydellDirection:
273*6cb02f15SPeter Maydell  server -> client
274*6cb02f15SPeter MaydellParameters:
275*6cb02f15SPeter Maydell  ``{ int16_t x, int16_t y }``
276*6cb02f15SPeter MaydellDescription:
277*6cb02f15SPeter Maydell  Absolute mouse moved.
278*6cb02f15SPeter Maydell
279*6cb02f15SPeter Maydell  ``x``, ``y`` = absolute screen coordinates
280*6cb02f15SPeter Maydell
281*6cb02f15SPeter MaydellbarrierCmdDMouseRelMove  "DMRM"
282*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
283*6cb02f15SPeter Maydell
284*6cb02f15SPeter MaydellDirection:
285*6cb02f15SPeter Maydell  server -> client
286*6cb02f15SPeter MaydellParameters:
287*6cb02f15SPeter Maydell  ``{ int16_t x, int16_t y }``
288*6cb02f15SPeter MaydellDescription:
289*6cb02f15SPeter Maydell  Relative mouse moved.
290*6cb02f15SPeter Maydell
291*6cb02f15SPeter Maydell  ``x``, ``y`` = r relative screen coordinates
292*6cb02f15SPeter Maydell
293*6cb02f15SPeter MaydellbarrierCmdDMouseWheel "DMWM"
294*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^^
295*6cb02f15SPeter Maydell
296*6cb02f15SPeter MaydellDirection:
297*6cb02f15SPeter Maydell  server -> client
298*6cb02f15SPeter MaydellParameters:
299*6cb02f15SPeter Maydell  ``{ int16_t x , int16_t y }`` or ``{ int16_t y }``
300*6cb02f15SPeter MaydellDescription:
301*6cb02f15SPeter Maydell  Mouse scroll. The delta should be +120 for one tick forward (away
302*6cb02f15SPeter Maydell  from the user) or right and -120 for one tick backward (toward the
303*6cb02f15SPeter Maydell  user) or left.
304*6cb02f15SPeter Maydell
305*6cb02f15SPeter Maydell  ``x`` = x delta
306*6cb02f15SPeter Maydell
307*6cb02f15SPeter Maydell  ``y`` = y delta
308*6cb02f15SPeter Maydell
309*6cb02f15SPeter MaydellbarrierCmdDClipboard "DCLP"
310*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^
311*6cb02f15SPeter Maydell
312*6cb02f15SPeter MaydellDirection:
313*6cb02f15SPeter Maydell  server -> client
314*6cb02f15SPeter MaydellParameters:
315*6cb02f15SPeter Maydell  ``{ int8_t id, int32_t seq, int8_t mark, char *data }``
316*6cb02f15SPeter MaydellDescription:
317*6cb02f15SPeter Maydell  Clipboard data.
318*6cb02f15SPeter Maydell
319*6cb02f15SPeter Maydell  ``id``  = clipboard id
320*6cb02f15SPeter Maydell
321*6cb02f15SPeter Maydell  ``seq`` = sequence number. The sequence number is 0 when sent by the
322*6cb02f15SPeter Maydell  server.  Client screens should use the/ sequence number from
323*6cb02f15SPeter Maydell  the most recent barrierCmdCEnter.
324*6cb02f15SPeter Maydell
325*6cb02f15SPeter MaydellbarrierCmdDSetOptions "DSOP"
326*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^^
327*6cb02f15SPeter Maydell
328*6cb02f15SPeter MaydellDirection:
329*6cb02f15SPeter Maydell  server -> client
330*6cb02f15SPeter MaydellParameters:
331*6cb02f15SPeter Maydell  ``{ int32 t nb, { int32_t id, int32_t val }[] }``
332*6cb02f15SPeter MaydellDescription:
333*6cb02f15SPeter Maydell  Set options. Client should set the given option/value pairs.
334*6cb02f15SPeter Maydell
335*6cb02f15SPeter Maydell  ``nb``  = numbers of ``{ id, val }`` entries
336*6cb02f15SPeter Maydell
337*6cb02f15SPeter Maydell  ``id``  = option id
338*6cb02f15SPeter Maydell
339*6cb02f15SPeter Maydell  ``val`` = option new value
340*6cb02f15SPeter Maydell
341*6cb02f15SPeter MaydellbarrierCmdDFileTransfer "DFTR"
342*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
343*6cb02f15SPeter Maydell
344*6cb02f15SPeter MaydellDirection:
345*6cb02f15SPeter Maydell  server -> client
346*6cb02f15SPeter MaydellParameters:
347*6cb02f15SPeter Maydell  ``{ int8_t mark, char *content }``
348*6cb02f15SPeter MaydellDescription:
349*6cb02f15SPeter Maydell  Transfer file data.
350*6cb02f15SPeter Maydell
351*6cb02f15SPeter Maydell  * ``mark`` = 0 means the content followed is the file size
352*6cb02f15SPeter Maydell  * 1 means the content followed is the chunk data
353*6cb02f15SPeter Maydell  * 2 means the file transfer is finished
354*6cb02f15SPeter Maydell
355*6cb02f15SPeter MaydellbarrierCmdDDragInfo  "DDRG"
356*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^
357*6cb02f15SPeter Maydell
358*6cb02f15SPeter MaydellDirection:
359*6cb02f15SPeter Maydell  server -> client
360*6cb02f15SPeter MaydellParameters:
361*6cb02f15SPeter Maydell  ``{ int16_t nb, char *content }``
362*6cb02f15SPeter MaydellDescription:
363*6cb02f15SPeter Maydell  Drag information.
364*6cb02f15SPeter Maydell
365*6cb02f15SPeter Maydell  ``nb``  = number of dragging objects
366*6cb02f15SPeter Maydell
367*6cb02f15SPeter Maydell  ``content`` = object's directory
368*6cb02f15SPeter Maydell
369*6cb02f15SPeter MaydellbarrierCmdQInfo  "QINF"
370*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^
371*6cb02f15SPeter Maydell
372*6cb02f15SPeter MaydellDirection:
373*6cb02f15SPeter Maydell  server -> client
374*6cb02f15SPeter MaydellParameters:
375*6cb02f15SPeter Maydell  None
376*6cb02f15SPeter MaydellDescription:
377*6cb02f15SPeter Maydell  Query screen info
378*6cb02f15SPeter Maydell
379*6cb02f15SPeter Maydell  Client should reply with a barrierCmdDInfo
380*6cb02f15SPeter Maydell
381*6cb02f15SPeter MaydellbarrierCmdEIncompatible  "EICV"
382*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
383*6cb02f15SPeter Maydell
384*6cb02f15SPeter MaydellDirection:
385*6cb02f15SPeter Maydell  server -> client
386*6cb02f15SPeter MaydellParameters:
387*6cb02f15SPeter Maydell  ``{ int16_t nb, major *minor }``
388*6cb02f15SPeter MaydellDescription:
389*6cb02f15SPeter Maydell  Incompatible version.
390*6cb02f15SPeter Maydell
391*6cb02f15SPeter Maydell  ``major`` = major version
392*6cb02f15SPeter Maydell
393*6cb02f15SPeter Maydell  ``minor`` = minor version
394*6cb02f15SPeter Maydell
395*6cb02f15SPeter MaydellbarrierCmdEBusy  "EBSY"
396*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^
397*6cb02f15SPeter Maydell
398*6cb02f15SPeter MaydellDirection:
399*6cb02f15SPeter Maydell  server -> client
400*6cb02f15SPeter MaydellParameters:
401*6cb02f15SPeter Maydell  None
402*6cb02f15SPeter MaydellDescription:
403*6cb02f15SPeter Maydell  Name provided when connecting is already in use.
404*6cb02f15SPeter Maydell
405*6cb02f15SPeter MaydellbarrierCmdEUnknown   "EUNK"
406*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^^^^^
407*6cb02f15SPeter Maydell
408*6cb02f15SPeter MaydellDirection:
409*6cb02f15SPeter Maydell  server -> client
410*6cb02f15SPeter MaydellParameters:
411*6cb02f15SPeter Maydell  None
412*6cb02f15SPeter MaydellDescription:
413*6cb02f15SPeter Maydell  Unknown client. Name provided when connecting is not in primary's
414*6cb02f15SPeter Maydell  screen configuration map.
415*6cb02f15SPeter Maydell
416*6cb02f15SPeter MaydellbarrierCmdEBad   "EBAD"
417*6cb02f15SPeter Maydell^^^^^^^^^^^^^^^^^^^^^^^
418*6cb02f15SPeter Maydell
419*6cb02f15SPeter MaydellDirection:
420*6cb02f15SPeter Maydell  server -> client
421*6cb02f15SPeter MaydellParameters:
422*6cb02f15SPeter Maydell  None
423*6cb02f15SPeter MaydellDescription:
424*6cb02f15SPeter Maydell  Protocol violation. Server should disconnect after sending this
425*6cb02f15SPeter Maydell  message.
426*6cb02f15SPeter Maydell
427