12910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner/*
2fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner * QError Module
32910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner *
42910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner * Copyright (C) 2009 Red Hat Inc.
52910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner *
62910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner * Authors:
72910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner *  Luiz Capitulino <lcapitulino@redhat.com>
82910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner *
92910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
102910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner * See the COPYING.LIB file in the top-level directory.
112910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner */
122910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#ifndef QERROR_H
132910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERROR_H
142910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
150fdfff3cce93e16179a454fd471cd1d9126204e0David 'Digit' Turner#include "qapi/qmp/qdict.h"
161c31e3e43ce4cca85a707dfff631e5e102fdecedDavid 'Digit' Turner#include "qapi/qmp/qstring.h"
171c31e3e43ce4cca85a707dfff631e5e102fdecedDavid 'Digit' Turner#include "qemu/error-report.h"
18910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#include "qapi/error.h"
19910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#include "qapi-types.h"
202910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#include <stdarg.h>
212910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
222910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turnertypedef struct QError {
232910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner    QObject_HEAD;
24fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner    Location loc;
25910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    char *err_msg;
26910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ErrorClass err_class;
272910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner} QError;
282910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
292910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' TurnerQString *qerror_human(const QError *qerror);
30910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turnervoid qerror_report(ErrorClass err_class, const char *fmt, ...) GCC_FMT_ATTR(2, 3);
31910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turnervoid qerror_report_err(Error *err);
32910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turnervoid assert_no_error(Error *err);
332910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
342910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner/*
352910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner * QError class list
36fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner * Please keep the definitions in alphabetical order.
37910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner * Use scripts/check-qerror.sh to check.
382910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner */
39910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_ADD_CLIENT_FAILED \
40910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Could not add client"
41910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
42910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_AMBIGUOUS_PATH \
43910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Path '%s' does not uniquely identify an object"
44910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
45fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_BAD_BUS_FOR_DEVICE \
46910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Device '%s' can't go on a %s bus"
47fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
48910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_BASE_NOT_FOUND \
49910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Base '%s' not found"
50910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
51910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_BLOCK_JOB_NOT_ACTIVE \
52910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_DEVICE_NOT_ACTIVE, "No active block job on device '%s'"
53910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
54910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_BLOCK_JOB_PAUSED \
55910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "The block job for device '%s' is currently paused"
56910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
57910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_BLOCK_JOB_NOT_READY \
58910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "The active block job for device '%s' cannot be completed"
59910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
60910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_BLOCK_FORMAT_FEATURE_NOT_SUPPORTED \
61910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Block format '%s' used by device '%s' does not support feature '%s'"
62910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
63910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_BUFFER_OVERRUN \
64910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "An internal buffer overran"
65fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
66fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_BUS_NO_HOTPLUG \
67910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Bus '%s' does not support hotplugging"
68910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
69910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_BUS_NOT_FOUND \
70910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Bus '%s' not found"
71910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
72910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_COMMAND_DISABLED \
73910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "The command %s has been disabled for this instance"
74fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
752910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_COMMAND_NOT_FOUND \
76910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_COMMAND_NOT_FOUND, "The command %s has not been found"
772910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
782910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_DEVICE_ENCRYPTED \
79910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_DEVICE_ENCRYPTED, "'%s' (%s) is encrypted"
80910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
81910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_DEVICE_FEATURE_BLOCKS_MIGRATION \
82910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Migration is disabled when using feature '%s' in device '%s'"
83910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
84910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_DEVICE_HAS_NO_MEDIUM \
85910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Device '%s' has no medium"
862910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
87fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_DEVICE_INIT_FAILED \
88910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Device '%s' could not be initialized"
89fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
90fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_DEVICE_IN_USE \
91910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Device '%s' is in use"
92910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
93910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_DEVICE_IS_READ_ONLY \
94910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Device '%s' is read only"
95fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
96fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_DEVICE_LOCKED \
97910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Device '%s' is locked"
982910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
99fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_DEVICE_MULTIPLE_BUSSES \
100910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Device '%s' has multiple child busses"
101910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
102910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_DEVICE_NO_BUS \
103910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Device '%s' has no child bus"
104910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
105910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_DEVICE_NO_HOTPLUG \
106910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Device '%s' does not support hotplugging"
107fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
1082910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_DEVICE_NOT_ACTIVE \
109910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_DEVICE_NOT_ACTIVE, "Device '%s' has not been activated"
1102910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
111fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_DEVICE_NOT_ENCRYPTED \
112910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Device '%s' is not encrypted"
113fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
1142910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_DEVICE_NOT_FOUND \
115910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_DEVICE_NOT_FOUND, "Device '%s' not found"
1162910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
1172910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_DEVICE_NOT_REMOVABLE \
118910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Device '%s' is not removable"
11947dc1f4132ed3bafd2f564458288f9931ef0e0a4David 'Digit' Turner
120fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_DUPLICATE_ID \
121910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Duplicate ID '%s' for %s"
122fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
1232910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_FD_NOT_FOUND \
124910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "File descriptor named '%s' not found"
1252910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
1262910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_FD_NOT_SUPPLIED \
127910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "No file descriptor supplied via SCM_RIGHTS"
128910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
129910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_FEATURE_DISABLED \
130910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "The feature '%s' is not enabled"
1312910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
1322910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_INVALID_BLOCK_FORMAT \
133910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Invalid block format '%s'"
134910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
135910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_INVALID_OPTION_GROUP \
136910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "There is no option group '%s'"
1372910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
1382910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_INVALID_PARAMETER \
139910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Invalid parameter '%s'"
140910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
141910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_INVALID_PARAMETER_COMBINATION \
142910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Invalid parameter combination"
1432910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
1442910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_INVALID_PARAMETER_TYPE \
145910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Invalid parameter type for '%s', expected: %s"
1462910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
147fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_INVALID_PARAMETER_VALUE \
148910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Parameter '%s' expects %s"
149fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
1502910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_INVALID_PASSWORD \
151910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Password incorrect"
152910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
153910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_IO_ERROR \
154910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "An IO error has occurred"
155910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
156910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_JSON_PARSE_ERROR \
157910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "JSON parse error, %s"
1582910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
1592910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_JSON_PARSING \
160910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Invalid JSON syntax"
1612910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
1622910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_KVM_MISSING_CAP \
163910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_K_V_M_MISSING_CAP, "Using KVM without %s, %s unavailable"
1642910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
165910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_MIGRATION_ACTIVE \
166910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "There's a migration process in progress"
167910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
168910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_MIGRATION_NOT_SUPPORTED \
169910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "State blocked by non-migratable device '%s'"
170fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
1712910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_MISSING_PARAMETER \
172910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Parameter '%s' is missing"
1732910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
174fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_NO_BUS_FOR_DEVICE \
175910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "No '%s' bus found for device '%s'"
176910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
177910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_NOT_SUPPORTED \
178910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Not supported"
179fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
180910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_PERMISSION_DENIED \
181910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Insufficient permission to perform this operation"
182fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
183fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_PROPERTY_NOT_FOUND \
184910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Property '%s.%s' not found"
185fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
186fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_PROPERTY_VALUE_BAD \
187910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Property '%s.%s' doesn't take value '%s'"
188fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
189fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_PROPERTY_VALUE_IN_USE \
190910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Property '%s.%s' can't take value '%s', it's in use"
191fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
192fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_PROPERTY_VALUE_NOT_FOUND \
193910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Property '%s.%s' can't find value '%s'"
194910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
195910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_PROPERTY_VALUE_NOT_POWER_OF_2 \
196910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Property %s.%s doesn't take value '%" PRId64 "', it's not a power of 2"
197910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
198910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_PROPERTY_VALUE_OUT_OF_RANGE \
199910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Property %s.%s doesn't take value %" PRId64 " (minimum: %" PRId64 ", maximum: %" PRId64 ")"
200910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
201910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_QGA_COMMAND_FAILED \
202910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Guest agent command failed, error was '%s'"
203910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
204910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_QGA_LOGGING_FAILED \
205910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Guest agent failed to log non-optional log statement"
206fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
2072910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_QMP_BAD_INPUT_OBJECT \
208910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Expected '%s' in QMP input"
2092910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
210fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_QMP_BAD_INPUT_OBJECT_MEMBER \
211910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "QMP input object member '%s' expects '%s'"
212fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
213fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_QMP_EXTRA_MEMBER \
214910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "QMP input object member '%s' is unexpected"
215910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
216910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_RESET_REQUIRED \
217910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Resetting the Virtual Machine is required"
218fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
2192910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_SET_PASSWD_FAILED \
220910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Could not set password"
2212910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
2222910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#define QERR_TOO_MANY_FILES \
223910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Too many open files"
2242910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
225fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner#define QERR_UNDEFINED_ERROR \
226910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "An undefined error has occurred"
227fd4c0076b7470f5962ff462bae9cd9f208e059b7David Turner
22847dc1f4132ed3bafd2f564458288f9931ef0e0a4David 'Digit' Turner#define QERR_UNKNOWN_BLOCK_FORMAT_FEATURE \
229910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "'%s' uses a %s feature which is not supported by this qemu version: %s"
23047dc1f4132ed3bafd2f564458288f9931ef0e0a4David 'Digit' Turner
231910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_UNSUPPORTED \
232910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "this feature or command is not currently supported"
2332910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner
234910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_VIRTFS_FEATURE_BLOCKS_MIGRATION \
235910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Migration is disabled when VirtFS export path '%s' is mounted in the guest using mount_tag '%s'"
236910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
237910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_SOCKET_CONNECT_FAILED \
238910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Failed to connect to socket"
239910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
240910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_SOCKET_LISTEN_FAILED \
241910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Failed to set socket to listening mode"
242910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
243910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_SOCKET_BIND_FAILED \
244910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Failed to bind socket"
245910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner
246910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner#define QERR_SOCKET_CREATE_FAILED \
247910aea96b67d7f0357f586c47f20848ec435aa1bDavid 'Digit' Turner    ERROR_CLASS_GENERIC_ERROR, "Failed to create socket"
24847dc1f4132ed3bafd2f564458288f9931ef0e0a4David 'Digit' Turner
2492910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner#endif /* QERROR_H */
250