summaryrefslogtreecommitdiff
path: root/usr/src/lib/libdevinfo/devinfo.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libdevinfo/devinfo.c')
-rw-r--r--usr/src/lib/libdevinfo/devinfo.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/usr/src/lib/libdevinfo/devinfo.c b/usr/src/lib/libdevinfo/devinfo.c
index e37e207474..c9179e0d1f 100644
--- a/usr/src/lib/libdevinfo/devinfo.c
+++ b/usr/src/lib/libdevinfo/devinfo.c
@@ -271,6 +271,14 @@ di_init_impl(const char *phys_path, uint_t flag,
(void) close(fd);
dap = DI_ALL(pa);
+ if (dap->version != DI_SNAPSHOT_VERSION) {
+ DPRINTF((DI_ERR, "wrong snapshot version "
+ "(expected=%d, actual=%d)\n",
+ DI_SNAPSHOT_VERSION, dap->version));
+ free(pa);
+ errno = ESTALE;
+ return (DI_NODE_NIL);
+ }
if (dap->top_devinfo == 0) { /* phys_path not found */
DPRINTF((DI_ERR, "%s not found\n", phys_path));
free(pa);
@@ -984,6 +992,12 @@ di_node_state(di_node_t node)
return (DI_NODE(node)->node_state);
}
+uint_t
+di_flags(di_node_t node)
+{
+ return (DI_NODE(node)->flags);
+}
+
ddi_devid_t
di_devid(di_node_t node)
{