Print this page

        

@@ -124,11 +124,11 @@
         }
         (void) dlmgmt_set_doorfd(B_FALSE);
         dlmgmt_door_fd = -1;
 }
 
-static int
+int
 dlmgmt_door_attach(zoneid_t zoneid, char *rootdir)
 {
         int     fd;
         int     err = 0;
         char    doorpath[MAXPATHLEN];

@@ -230,11 +230,11 @@
  * Initialize each running zone.
  */
 static int
 dlmgmt_allzones_init(void)
 {
-        int             i;
+        int             err, i;
         zoneid_t        *zids = NULL;
         uint_t          nzids, nzids_saved;
 
         if (zone_list(NULL, &nzids) != 0)
                 return (errno);

@@ -251,41 +251,15 @@
                 free(zids);
                 goto again;
         }
 
         for (i = 0; i < nzids; i++) {
-                int res;
-                zone_status_t status;
-
-                /*
-                 * Skip over zones that have gone away or are going down
-                 * since we got the list.  Process all zones in the list,
-                 * logging errors for any that failed.
-                 */
-                if (zone_getattr(zids[i], ZONE_ATTR_STATUS, &status,
-                    sizeof (status)) < 0)
-                        continue;
-                switch (status) {
-                        case ZONE_IS_SHUTTING_DOWN:
-                        case ZONE_IS_EMPTY:
-                        case ZONE_IS_DOWN:
-                        case ZONE_IS_DYING:
-                        case ZONE_IS_DEAD:
-                                /* FALLTHRU */
-                                continue;
-                        default:
+                if ((err = dlmgmt_zone_init(zids[i])) != 0)
                                 break;
                 }
-                if ((res = dlmgmt_zone_init(zids[i])) != 0) {
-                        (void) fprintf(stderr, "zone (%ld) init error %s",
-                            zids[i], strerror(res));
-                        dlmgmt_log(LOG_ERR, "zone (%d) init error %s",
-                            zids[i], strerror(res));
-                }
-        }
         free(zids);
-        return (0);
+        return (err);
 }
 
 static int
 dlmgmt_init(void)
 {