int virNodeDeviceGetAutostart(virNodeDevicePtr dev,
int *autostart);
+int virNodeDeviceIsPersistent(virNodeDevicePtr dev);
+
+int virNodeDeviceIsActive(virNodeDevicePtr dev);
+
/**
* VIR_NODE_DEVICE_EVENT_CALLBACK:
*
(*virDrvNodeDeviceGetAutostart)(virNodeDevicePtr dev,
int *autostart);
+typedef int
+(*virDrvNodeDeviceIsPersistent)(virNodeDevicePtr dev);
+
+typedef int
+(*virDrvNodeDeviceIsActive)(virNodeDevicePtr dev);
+
typedef int
(*virDrvConnectNodeDeviceEventRegisterAny)(virConnectPtr conn,
virNodeDevicePtr dev,
virDrvNodeDeviceCreate nodeDeviceCreate;
virDrvNodeDeviceSetAutostart nodeDeviceSetAutostart;
virDrvNodeDeviceGetAutostart nodeDeviceGetAutostart;
+ virDrvNodeDeviceIsPersistent nodeDeviceIsPersistent;
+ virDrvNodeDeviceIsActive nodeDeviceIsActive;
};
virDispatchError(dev->conn);
return -1;
}
+
+/**
+ * virNodeDeviceIsPersistent:
+ * @dev: pointer to the nodedev object
+ *
+ * Determine if the node device has a persistent configuration
+ * which means it will still exist after shutting down
+ *
+ * Returns 1 if persistent, 0 if transient, -1 on error
+ */
+int
+virNodeDeviceIsPersistent(virNodeDevicePtr dev)
+{
+ VIR_DEBUG("dev=%p", dev);
+
+ virResetLastError();
+
+ virCheckNodeDeviceReturn(dev, -1);
+
+ if (dev->conn->nodeDeviceDriver &&
+ dev->conn->nodeDeviceDriver->nodeDeviceIsPersistent) {
+ int ret;
+ ret = dev->conn->nodeDeviceDriver->nodeDeviceIsPersistent(dev);
+ if (ret < 0)
+ goto error;
+ return ret;
+ }
+
+ virReportUnsupportedError();
+ error:
+ virDispatchError(dev->conn);
+ return -1;
+}
+
+
+/**
+ * virNodeDeviceIsActive:
+ * @dev: pointer to the node device object
+ *
+ * Determine if the node device is currently active
+ *
+ * Returns 1 if active, 0 if inactive, -1 on error
+ */
+int virNodeDeviceIsActive(virNodeDevicePtr dev)
+{
+ VIR_DEBUG("dev=%p", dev);
+
+ virResetLastError();
+
+ virCheckNodeDeviceReturn(dev, -1);
+
+ if (dev->conn->nodeDeviceDriver &&
+ dev->conn->nodeDeviceDriver->nodeDeviceIsActive) {
+ int ret;
+ ret = dev->conn->nodeDeviceDriver->nodeDeviceIsActive(dev);
+ if (ret < 0)
+ goto error;
+ return ret;
+ }
+
+ virReportUnsupportedError();
+ error:
+ virDispatchError(dev->conn);
+ return -1;
+}
global:
virNodeDeviceSetAutostart;
virNodeDeviceGetAutostart;
+ virNodeDeviceIsPersistent;
+ virNodeDeviceIsActive;
} LIBVIRT_7.7.0;
# .... define new API here using predicted next version number ....
.nodeDeviceDestroy = remoteNodeDeviceDestroy, /* 0.6.3 */
.nodeDeviceGetAutostart = remoteNodeDeviceGetAutostart, /* 7.8.0 */
.nodeDeviceSetAutostart = remoteNodeDeviceSetAutostart, /* 7.8.0 */
+ .nodeDeviceIsPersistent = remoteNodeDeviceIsPersistent, /* 7.8.0 */
+ .nodeDeviceIsActive = remoteNodeDeviceIsActive, /* 7.8.0 */
};
static virNWFilterDriver nwfilter_driver = {
int autostart;
};
+struct remote_node_device_is_persistent_args {
+ remote_nonnull_string name;
+};
+
+struct remote_node_device_is_persistent_ret {
+ int persistent;
+};
+
+struct remote_node_device_is_active_args {
+ remote_nonnull_string name;
+};
+
+struct remote_node_device_is_active_ret {
+ int active;
+};
+
/*
* Events Register/Deregister:
* @priority: high
* @acl: node_device:write
*/
- REMOTE_PROC_NODE_DEVICE_SET_AUTOSTART = 434
+ REMOTE_PROC_NODE_DEVICE_SET_AUTOSTART = 434,
+
+ /**
+ * @generate: both
+ * @priority: high
+ * @acl: node_device:read
+ */
+ REMOTE_PROC_NODE_DEVICE_IS_PERSISTENT = 435,
+
+ /**
+ * @generate: both
+ * @priority: high
+ * @acl: node_device:read
+ */
+ REMOTE_PROC_NODE_DEVICE_IS_ACTIVE = 436
+
};
remote_nonnull_string name;
int autostart;
};
+struct remote_node_device_is_persistent_args {
+ remote_nonnull_string name;
+};
+struct remote_node_device_is_persistent_ret {
+ int persistent;
+};
+struct remote_node_device_is_active_args {
+ remote_nonnull_string name;
+};
+struct remote_node_device_is_active_ret {
+ int active;
+};
struct remote_connect_domain_event_register_ret {
int cb_registered;
};
REMOTE_PROC_NETWORK_DEFINE_XML_FLAGS = 432,
REMOTE_PROC_NODE_DEVICE_GET_AUTOSTART = 433,
REMOTE_PROC_NODE_DEVICE_SET_AUTOSTART = 434,
+ REMOTE_PROC_NODE_DEVICE_IS_PERSISTENT = 435,
+ REMOTE_PROC_NODE_DEVICE_IS_ACTIVE = 436,
};