} \
} while (0)
-# define VIR_IS_INTERFACE(obj) \
- (virObjectIsClass((obj), virInterfaceClass))
-# define VIR_IS_CONNECTED_INTERFACE(obj) \
- (VIR_IS_INTERFACE(obj) && virObjectIsClass((obj)->conn, virConnectClass))
+# define virCheckInterfaceReturn(obj, retval) \
+ do { \
+ virInterfacePtr _iface = (obj); \
+ if (!virObjectIsClass(_iface, virInterfaceClass) || \
+ !virObjectIsClass(_iface->conn, virConnectClass)) { \
+ virReportErrorHelper(VIR_FROM_INTERFACE, \
+ VIR_ERR_INVALID_INTERFACE, \
+ __FILE__, __FUNCTION__, __LINE__, \
+ __FUNCTION__); \
+ virDispatchError(NULL); \
+ return retval; \
+ } \
+ } while (0)
# define VIR_IS_STORAGE_POOL(obj) \
(virObjectIsClass((obj), virStoragePoolClass))
#define virLibStorageVolError(code, ...) \
virReportErrorHelper(VIR_FROM_STORAGE, code, __FILE__, \
__FUNCTION__, __LINE__, __VA_ARGS__)
-#define virLibInterfaceError(code, ...) \
- virReportErrorHelper(VIR_FROM_INTERFACE, code, __FILE__, \
- __FUNCTION__, __LINE__, __VA_ARGS__)
#define virLibNodeDeviceError(code, ...) \
virReportErrorHelper(VIR_FROM_NODEDEV, code, __FILE__, \
__FUNCTION__, __LINE__, __VA_ARGS__)
virResetLastError();
- if (!VIR_IS_CONNECTED_INTERFACE(iface)) {
- virLibInterfaceError(VIR_ERR_INVALID_INTERFACE, __FUNCTION__);
- virDispatchError(NULL);
- return NULL;
- }
+ virCheckInterfaceReturn(iface, NULL);
+
return iface->conn;
}
virResetLastError();
- if (!VIR_IS_INTERFACE(iface)) {
- virLibInterfaceError(VIR_ERR_INVALID_INTERFACE, __FUNCTION__);
- virDispatchError(NULL);
- return NULL;
- }
+ virCheckInterfaceReturn(iface, NULL);
+
return iface->name;
}
virResetLastError();
- if (!VIR_IS_INTERFACE(iface)) {
- virLibInterfaceError(VIR_ERR_INVALID_INTERFACE, __FUNCTION__);
- virDispatchError(NULL);
- return NULL;
- }
+ virCheckInterfaceReturn(iface, NULL);
+
return iface->mac;
}
virResetLastError();
- if (!VIR_IS_CONNECTED_INTERFACE(iface)) {
- virLibInterfaceError(VIR_ERR_INVALID_INTERFACE, __FUNCTION__);
- virDispatchError(NULL);
- return NULL;
- }
-
+ virCheckInterfaceReturn(iface, NULL);
conn = iface->conn;
if (conn->interfaceDriver && conn->interfaceDriver->interfaceGetXMLDesc) {
virResetLastError();
- if (!VIR_IS_CONNECTED_INTERFACE(iface)) {
- virLibInterfaceError(VIR_ERR_INVALID_INTERFACE, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckInterfaceReturn(iface, -1);
conn = iface->conn;
+
virCheckReadOnlyGoto(conn->flags, error);
if (conn->interfaceDriver && conn->interfaceDriver->interfaceUndefine) {
virResetLastError();
- if (!VIR_IS_CONNECTED_INTERFACE(iface)) {
- virLibInterfaceError(VIR_ERR_INVALID_INTERFACE, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckInterfaceReturn(iface, -1);
conn = iface->conn;
+
virCheckReadOnlyGoto(conn->flags, error);
if (conn->interfaceDriver && conn->interfaceDriver->interfaceCreate) {
virResetLastError();
- if (!VIR_IS_CONNECTED_INTERFACE(iface)) {
- virLibInterfaceError(VIR_ERR_INVALID_INTERFACE, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
-
+ virCheckInterfaceReturn(iface, -1);
conn = iface->conn;
+
virCheckReadOnlyGoto(conn->flags, error);
if (conn->interfaceDriver && conn->interfaceDriver->interfaceDestroy) {
virResetLastError();
- if ((!VIR_IS_CONNECTED_INTERFACE(iface))) {
- virLibConnError(VIR_ERR_INVALID_INTERFACE, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckInterfaceReturn(iface, -1);
+
virObjectRef(iface);
return 0;
}
virResetLastError();
- if (!VIR_IS_CONNECTED_INTERFACE(iface)) {
- virLibInterfaceError(VIR_ERR_INVALID_INTERFACE, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckInterfaceReturn(iface, -1);
+
virObjectUnref(iface);
return 0;
}
virResetLastError();
- if (!VIR_IS_CONNECTED_INTERFACE(iface)) {
- virLibConnError(VIR_ERR_INVALID_CONN, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckInterfaceReturn(iface, -1);
+
if (iface->conn->interfaceDriver->interfaceIsActive) {
int ret;
ret = iface->conn->interfaceDriver->interfaceIsActive(iface);