} \
} while (0)
-# define VIR_IS_NETWORK(obj) \
- (virObjectIsClass((obj), virNetworkClass))
-# define VIR_IS_CONNECTED_NETWORK(obj) \
- (VIR_IS_NETWORK(obj) && virObjectIsClass((obj)->conn, virConnectClass))
+# define virCheckNetworkReturn(obj, retval) \
+ do { \
+ virNetworkPtr _net = (obj); \
+ if (!virObjectIsClass(_net, virNetworkClass) || \
+ !virObjectIsClass(_net->conn, virConnectClass)) { \
+ virReportErrorHelper(VIR_FROM_NETWORK, \
+ VIR_ERR_INVALID_NETWORK, \
+ __FILE__, __FUNCTION__, __LINE__, \
+ __FUNCTION__); \
+ virDispatchError(NULL); \
+ return retval; \
+ } \
+ } while (0)
+# define virCheckNetworkGoto(obj, label) \
+ do { \
+ virNetworkPtr _net = (obj); \
+ if (!virObjectIsClass(_net, virNetworkClass) || \
+ !virObjectIsClass(_net->conn, virConnectClass)) { \
+ virReportErrorHelper(VIR_FROM_NETWORK, \
+ VIR_ERR_INVALID_NETWORK, \
+ __FILE__, __FUNCTION__, __LINE__, \
+ __FUNCTION__); \
+ goto label; \
+ } \
+ } while (0)
# define VIR_IS_INTERFACE(obj) \
(virObjectIsClass((obj), virInterfaceClass))
#define virLibDomainError(code, ...) \
virReportErrorHelper(VIR_FROM_DOM, code, __FILE__, \
__FUNCTION__, __LINE__, __VA_ARGS__)
-#define virLibNetworkError(code, ...) \
- virReportErrorHelper(VIR_FROM_NETWORK, code, __FILE__, \
- __FUNCTION__, __LINE__, __VA_ARGS__)
#define virLibStoragePoolError(code, ...) \
virReportErrorHelper(VIR_FROM_STORAGE, code, __FILE__, \
__FUNCTION__, __LINE__, __VA_ARGS__)
virResetLastError();
- if (!VIR_IS_CONNECTED_NETWORK(net)) {
- virLibNetworkError(VIR_ERR_INVALID_NETWORK, __FUNCTION__);
- virDispatchError(NULL);
- return NULL;
- }
+ virCheckNetworkReturn(net, NULL);
+
return net->conn;
}
virResetLastError();
- if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(VIR_ERR_INVALID_NETWORK, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckNetworkReturn(network, -1);
conn = network->conn;
+
virCheckReadOnlyGoto(conn->flags, error);
if (conn->networkDriver && conn->networkDriver->networkUndefine) {
virResetLastError();
- if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(VIR_ERR_INVALID_NETWORK, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckNetworkReturn(network, -1);
conn = network->conn;
- virCheckReadOnlyGoto(conn->flags, error);
+ virCheckReadOnlyGoto(conn->flags, error);
virCheckNonNullArgGoto(xml, error);
if (conn->networkDriver && conn->networkDriver->networkUpdate) {
virResetLastError();
- if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(VIR_ERR_INVALID_NETWORK, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckNetworkReturn(network, -1);
conn = network->conn;
+
virCheckReadOnlyGoto(conn->flags, error);
if (conn->networkDriver && conn->networkDriver->networkCreate) {
virResetLastError();
- if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(VIR_ERR_INVALID_NETWORK, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
-
+ virCheckNetworkReturn(network, -1);
conn = network->conn;
+
virCheckReadOnlyGoto(conn->flags, error);
if (conn->networkDriver && conn->networkDriver->networkDestroy) {
virResetLastError();
- if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(VIR_ERR_INVALID_NETWORK, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckNetworkReturn(network, -1);
+
virObjectUnref(network);
return 0;
}
virResetLastError();
- if ((!VIR_IS_CONNECTED_NETWORK(network))) {
- virLibConnError(VIR_ERR_INVALID_NETWORK, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckNetworkReturn(network, -1);
+
virObjectRef(network);
return 0;
}
virResetLastError();
- if (!VIR_IS_NETWORK(network)) {
- virLibNetworkError(VIR_ERR_INVALID_NETWORK, __FUNCTION__);
- virDispatchError(NULL);
- return NULL;
- }
+ virCheckNetworkReturn(network, NULL);
+
return network->name;
}
virResetLastError();
- if (!VIR_IS_NETWORK(network)) {
- virLibNetworkError(VIR_ERR_INVALID_NETWORK, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckNetworkReturn(network, -1);
virCheckNonNullArgGoto(uuid, error);
memcpy(uuid, &network->uuid[0], VIR_UUID_BUFLEN);
virResetLastError();
- if (!VIR_IS_NETWORK(network)) {
- virLibNetworkError(VIR_ERR_INVALID_NETWORK, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckNetworkReturn(network, -1);
virCheckNonNullArgGoto(buf, error);
virUUIDFormat(network->uuid, buf);
virResetLastError();
- if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(VIR_ERR_INVALID_NETWORK, __FUNCTION__);
- virDispatchError(NULL);
- return NULL;
- }
-
+ virCheckNetworkReturn(network, NULL);
conn = network->conn;
if (conn->networkDriver && conn->networkDriver->networkGetXMLDesc) {
virResetLastError();
- if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(VIR_ERR_INVALID_NETWORK, __FUNCTION__);
- virDispatchError(NULL);
- return NULL;
- }
-
+ virCheckNetworkReturn(network, NULL);
conn = network->conn;
if (conn->networkDriver && conn->networkDriver->networkGetBridgeName) {
virResetLastError();
- if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(VIR_ERR_INVALID_NETWORK, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckNetworkReturn(network, -1);
virCheckNonNullArgGoto(autostart, error);
conn = network->conn;
virResetLastError();
- if (!VIR_IS_CONNECTED_NETWORK(network)) {
- virLibNetworkError(VIR_ERR_INVALID_NETWORK, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
-
- virCheckReadOnlyGoto(network->conn->flags, error);
-
+ virCheckNetworkReturn(network, -1);
conn = network->conn;
+ virCheckReadOnlyGoto(conn->flags, error);
+
if (conn->networkDriver && conn->networkDriver->networkSetAutostart) {
int ret;
ret = conn->networkDriver->networkSetAutostart(network, autostart);
virResetLastError();
- if (!VIR_IS_CONNECTED_NETWORK(net)) {
- virLibConnError(VIR_ERR_INVALID_CONN, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckNetworkReturn(net, -1);
+
if (net->conn->networkDriver->networkIsActive) {
int ret;
ret = net->conn->networkDriver->networkIsActive(net);
virResetLastError();
- if (!VIR_IS_CONNECTED_NETWORK(net)) {
- virLibConnError(VIR_ERR_INVALID_CONN, __FUNCTION__);
- virDispatchError(NULL);
- return -1;
- }
+ virCheckNetworkReturn(net, -1);
+
if (net->conn->networkDriver->networkIsPersistent) {
int ret;
ret = net->conn->networkDriver->networkIsPersistent(net);
virResetLastError();
virCheckConnectReturn(conn, -1);
- if (net != NULL &&
- !(VIR_IS_CONNECTED_NETWORK(net) && net->conn == conn)) {
- virLibConnError(VIR_ERR_INVALID_CONN, __FUNCTION__);
- virDispatchError(conn);
- return -1;
+ if (net) {
+ virCheckNetworkGoto(net, error);
+ if (net->conn != conn) {
+ virReportInvalidArg(net,
+ _("network '%s' in %s must match connection"),
+ net->name, __FUNCTION__);
+ goto error;
+ }
}
virCheckNonNullArgGoto(cb, error);
virCheckNonNegativeArgGoto(eventID, error);