} \
} while (0)
-# define VIR_IS_NODE_DEVICE(obj) \
- (virObjectIsClass((obj), virNodeDeviceClass))
-# define VIR_IS_CONNECTED_NODE_DEVICE(obj) \
- (VIR_IS_NODE_DEVICE(obj) && virObjectIsClass((obj)->conn, virConnectClass))
+# define virCheckNodeDeviceReturn(obj, retval) \
+ do { \
+ virNodeDevicePtr _node = (obj); \
+ if (!virObjectIsClass(_node, virNodeDeviceClass) || \
+ !virObjectIsClass(_node->conn, virConnectClass)) { \
+ virReportErrorHelper(VIR_FROM_NODEDEV, \
+ VIR_ERR_INVALID_NODE_DEVICE, \
+ __FILE__, __FUNCTION__, __LINE__, \
+ __FUNCTION__); \
+ virDispatchError(NULL); \
+ return retval; \
+ } \
+ } while (0)
# define VIR_IS_SECRET(obj) \
(virObjectIsClass((obj), virSecretClass))
#define virLibDomainError(code, ...) \
virReportErrorHelper(VIR_FROM_DOM, code, __FILE__, \
__FUNCTION__, __LINE__, __VA_ARGS__)
-#define virLibNodeDeviceError(code, ...) \
- virReportErrorHelper(VIR_FROM_NODEDEV, code, __FILE__, \
- __FUNCTION__, __LINE__, __VA_ARGS__)
#define virLibSecretError(code, ...) \
virReportErrorHelper(VIR_FROM_SECRET, code, __FILE__, \
__FUNCTION__, __LINE__, __VA_ARGS__)
virResetLastError();
- if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) {
- virLibNodeDeviceError(VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__);
- virDispatchError(NULL);
- return NULL;
- }
+ virCheckNodeDeviceReturn(dev, NULL);
if (dev->conn->nodeDeviceDriver && dev->conn->nodeDeviceDriver->nodeDeviceGetXMLDesc) {
char *ret;
virResetLastError();
- if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) {
- virLibNodeDeviceError(VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__);
- virDispatchError(NULL);
- return NULL;
- }
+ virCheckNodeDeviceReturn(dev, NULL);
return dev->name;
}
virResetLastError();
- if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) {
- virLibNodeDeviceError(VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__);
- virDispatchError(NULL);
- return NULL;
- }
+ virCheckNodeDeviceReturn(dev, NULL);
if (!dev->parent) {
if (dev->conn->nodeDeviceDriver && dev->conn->nodeDeviceDriver->nodeDeviceGetParent) {
virResetLastError();
- if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) {
- virLibNodeDeviceError(VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckNodeDeviceReturn(dev, -1);
if (dev->conn->nodeDeviceDriver && dev->conn->nodeDeviceDriver->nodeDeviceNumOfCaps) {
int ret;
virResetLastError();
- if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) {
- virLibNodeDeviceError(VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
-
+ virCheckNodeDeviceReturn(dev, -1);
virCheckNonNullArgGoto(names, error);
virCheckNonNegativeArgGoto(maxnames, error);
virResetLastError();
- if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) {
- virLibNodeDeviceError(VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckNodeDeviceReturn(dev, -1);
+
virObjectUnref(dev);
return 0;
}
virResetLastError();
- if ((!VIR_IS_CONNECTED_NODE_DEVICE(dev))) {
- virLibConnError(VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckNodeDeviceReturn(dev, -1);
+
virObjectRef(dev);
return 0;
}
virResetLastError();
- if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) {
- virLibNodeDeviceError(VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
-
+ virCheckNodeDeviceReturn(dev, -1);
virCheckReadOnlyGoto(dev->conn->flags, error);
if (dev->conn->driver->nodeDeviceDettach) {
virResetLastError();
- if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) {
- virLibNodeDeviceError(VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
-
+ virCheckNodeDeviceReturn(dev, -1);
virCheckReadOnlyGoto(dev->conn->flags, error);
if (dev->conn->driver->nodeDeviceDetachFlags) {
virResetLastError();
- if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) {
- virLibNodeDeviceError(VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
-
+ virCheckNodeDeviceReturn(dev, -1);
virCheckReadOnlyGoto(dev->conn->flags, error);
if (dev->conn->driver->nodeDeviceReAttach) {
virResetLastError();
- if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) {
- virLibNodeDeviceError(VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
-
+ virCheckNodeDeviceReturn(dev, -1);
virCheckReadOnlyGoto(dev->conn->flags, error);
if (dev->conn->driver->nodeDeviceReset) {
virResetLastError();
- if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) {
- virLibNodeDeviceError(VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
-
+ virCheckNodeDeviceReturn(dev, -1);
virCheckReadOnlyGoto(dev->conn->flags, error);
if (dev->conn->nodeDeviceDriver &&