usr/src/uts/common/os/zone.c
changeset 5895 f251acdd9bdc
parent 5880 3f55db3cd80f
child 6073 47f6aa7a8077
--- a/usr/src/uts/common/os/zone.c	Wed Jan 23 17:56:52 2008 -0800
+++ b/usr/src/uts/common/os/zone.c	Wed Jan 23 18:09:15 2008 -0800
@@ -6149,3 +6149,26 @@
 	mutex_exit(&zonehash_lock);
 	return (zone);
 }
+
+/*
+ * Walk the datalinks for a given zone
+ */
+int
+zone_datalink_walk(zoneid_t zoneid, int (*cb)(const char *, void *), void *data)
+{
+	zone_t *zone;
+	struct dlnamelist *dlnl;
+	int ret = 0;
+
+	if ((zone = zone_find_by_id(zoneid)) == NULL)
+		return (ENOENT);
+
+	mutex_enter(&zone->zone_lock);
+	for (dlnl = zone->zone_dl_list; dlnl != NULL; dlnl = dlnl->dlnl_next) {
+		if ((ret = (*cb)(dlnl->dlnl_name, data)) != 0)
+			break;
+	}
+	mutex_exit(&zone->zone_lock);
+	zone_rele(zone);
+	return (ret);
+}