]>
Commit | Line | Data |
---|---|---|
a9090a94 AP |
1 | /*\r |
2 | * Details of the "wire" protocol between Xen Store Daemon and client\r | |
3 | * library or guest kernel.\r | |
4 | *\r | |
6f21d772 | 5 | * SPDX-License-Identifier: MIT\r |
a9090a94 AP |
6 | *\r |
7 | * Copyright (C) 2005 Rusty Russell IBM Corporation\r | |
8 | */\r | |
9 | \r | |
10 | #ifndef _XS_WIRE_H\r | |
11 | #define _XS_WIRE_H\r | |
12 | \r | |
ac0a286f MK |
13 | enum xsd_sockmsg_type {\r |
14 | XS_DEBUG,\r | |
15 | XS_DIRECTORY,\r | |
16 | XS_READ,\r | |
17 | XS_GET_PERMS,\r | |
18 | XS_WATCH,\r | |
19 | XS_UNWATCH,\r | |
20 | XS_TRANSACTION_START,\r | |
21 | XS_TRANSACTION_END,\r | |
22 | XS_INTRODUCE,\r | |
23 | XS_RELEASE,\r | |
24 | XS_GET_DOMAIN_PATH,\r | |
25 | XS_WRITE,\r | |
26 | XS_MKDIR,\r | |
27 | XS_RM,\r | |
28 | XS_SET_PERMS,\r | |
29 | XS_WATCH_EVENT,\r | |
30 | XS_ERROR,\r | |
31 | XS_IS_DOMAIN_INTRODUCED,\r | |
32 | XS_RESUME,\r | |
33 | XS_SET_TARGET,\r | |
34 | XS_RESTRICT,\r | |
35 | XS_RESET_WATCHES,\r | |
36 | \r | |
37 | XS_INVALID = 0xffff /* Guaranteed to remain an invalid type */\r | |
a9090a94 AP |
38 | };\r |
39 | \r | |
ac0a286f MK |
40 | #define XS_WRITE_NONE "NONE"\r |
41 | #define XS_WRITE_CREATE "CREATE"\r | |
42 | #define XS_WRITE_CREATE_EXCL "CREATE|EXCL"\r | |
a9090a94 AP |
43 | \r |
44 | /* We hand errors as strings, for portability. */\r | |
ac0a286f MK |
45 | struct xsd_errors {\r |
46 | INT32 errnum;\r | |
47 | const CHAR8 *errstring;\r | |
a9090a94 | 48 | };\r |
ac0a286f | 49 | \r |
a9090a94 | 50 | #ifdef EINVAL\r |
ac0a286f | 51 | #define XSD_ERROR(x) { x, #x }\r |
a9090a94 AP |
52 | /* LINTED: static unused */\r |
53 | static struct xsd_errors xsd_errors[]\r | |
ac0a286f MK |
54 | #if defined (__GNUC__)\r |
55 | __attribute__ ((unused))\r | |
56 | #endif\r | |
57 | = {\r | |
58 | XSD_ERROR (EINVAL),\r | |
59 | XSD_ERROR (EACCES),\r | |
60 | XSD_ERROR (EEXIST),\r | |
61 | XSD_ERROR (EISDIR),\r | |
62 | XSD_ERROR (ENOENT),\r | |
63 | XSD_ERROR (ENOMEM),\r | |
64 | XSD_ERROR (ENOSPC),\r | |
65 | XSD_ERROR (EIO),\r | |
66 | XSD_ERROR (ENOTEMPTY),\r | |
67 | XSD_ERROR (ENOSYS),\r | |
68 | XSD_ERROR (EROFS),\r | |
69 | XSD_ERROR (EBUSY),\r | |
70 | XSD_ERROR (EAGAIN),\r | |
71 | XSD_ERROR (EISCONN),\r | |
72 | XSD_ERROR (E2BIG)\r | |
73 | };\r | |
a9090a94 AP |
74 | #endif\r |
75 | \r | |
ac0a286f MK |
76 | struct xsd_sockmsg {\r |
77 | UINT32 type; /* XS_??? */\r | |
78 | UINT32 req_id; /* Request identifier, echoed in daemon's response. */\r | |
79 | UINT32 tx_id; /* Transaction id (0 if not related to a transaction). */\r | |
80 | UINT32 len; /* Length of data following this. */\r | |
a9090a94 | 81 | \r |
ac0a286f | 82 | /* Generally followed by nul-terminated string(s). */\r |
a9090a94 AP |
83 | };\r |
84 | \r | |
ac0a286f MK |
85 | enum xs_watch_type {\r |
86 | XS_WATCH_PATH = 0,\r | |
87 | XS_WATCH_TOKEN\r | |
a9090a94 AP |
88 | };\r |
89 | \r | |
90 | /*\r | |
91 | * `incontents 150 xenstore_struct XenStore wire protocol.\r | |
92 | *\r | |
93 | * Inter-domain shared memory communications. */\r | |
ac0a286f | 94 | #define XENSTORE_RING_SIZE 1024\r |
a9090a94 | 95 | typedef UINT32 XENSTORE_RING_IDX;\r |
ac0a286f | 96 | #define MASK_XENSTORE_IDX(idx) ((idx) & (XENSTORE_RING_SIZE-1))\r |
a9090a94 | 97 | struct xenstore_domain_interface {\r |
ac0a286f MK |
98 | CHAR8 req[XENSTORE_RING_SIZE]; /* Requests to xenstore daemon. */\r |
99 | CHAR8 rsp[XENSTORE_RING_SIZE]; /* Replies and async watch events. */\r | |
100 | XENSTORE_RING_IDX req_cons, req_prod;\r | |
101 | XENSTORE_RING_IDX rsp_cons, rsp_prod;\r | |
102 | UINT32 server_features; /* Bitmap of features supported by the server */\r | |
103 | UINT32 connection;\r | |
a9090a94 AP |
104 | };\r |
105 | \r | |
106 | /* Violating this is very bad. See docs/misc/xenstore.txt. */\r | |
ac0a286f | 107 | #define XENSTORE_PAYLOAD_MAX 4096\r |
a9090a94 AP |
108 | \r |
109 | /* Violating these just gets you an error back */\r | |
ac0a286f MK |
110 | #define XENSTORE_ABS_PATH_MAX 3072\r |
111 | #define XENSTORE_REL_PATH_MAX 2048\r | |
a9090a94 AP |
112 | \r |
113 | /* The ability to reconnect a ring */\r | |
ac0a286f | 114 | #define XENSTORE_SERVER_FEATURE_RECONNECTION 1\r |
a9090a94 AP |
115 | \r |
116 | /* Valid values for the connection field */\r | |
ac0a286f MK |
117 | #define XENSTORE_CONNECTED 0 /* the steady-state */\r |
118 | #define XENSTORE_RECONNECT 1 /* guest has initiated a reconnect */\r | |
a9090a94 AP |
119 | \r |
120 | #endif /* _XS_WIRE_H */\r | |
121 | \r | |
122 | /*\r | |
123 | * Local variables:\r | |
124 | * mode: C\r | |
125 | * c-file-style: "BSD"\r | |
126 | * c-basic-offset: 4\r | |
127 | * tab-width: 4\r | |
128 | * indent-tabs-mode: nil\r | |
129 | * End:\r | |
130 | */\r |