45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * CDDL HEADER START
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * The contents of this file are subject to the terms of the
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Common Development and Distribution License (the "License").
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * You may not use this file except in compliance with the License.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * See the License for the specific language governing permissions
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * and limitations under the License.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * When distributing Covered Code, include this CDDL HEADER in each
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * If applicable, add the following below this CDDL HEADER, with the
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * fields enclosed by brackets "[]" replaced with your own identifying
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * information: Portions Copyright [yyyy] [name of copyright owner]
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * CDDL HEADER END
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Use is subject to license terms.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk#pragma ident "%Z%%M% %I% %E% SMI"
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Get label from zone name
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Get label from zone id
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk sizeof (m_label_t)) < 0) {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Get zone id from label
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk /* Check for admin_low or admin_high; both are global zone */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk if (blequal(label, &admin_low) || blequal(label, &admin_high))
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk return (-1);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk if (nzents == 0) {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk return (-1);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Add a small amount of padding here to avoid spinning in a tight loop
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * if there's a process running somewhere that's creating lots of zones
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * all at once.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk if ((zids = malloc(nzents * sizeof (zoneid_t))) == NULL)
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk return (-1);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk return (-1);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk /* list changed, try again */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk for (i = 0; i < nzents; i++) {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk sizeof (m_label_t)) < 0)
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk continue; /* Badly configured zone info */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk return (-1);
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Get zoneroot for a zoneid
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Get zoneroot for a zonename
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Get zoneroot for a label
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Get label of path relative to global zone
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * This function must be called from the global zone
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk /* Add a small amount of padding to avoid loops */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk /* list changed, try again */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk for (i = 0; i < nzents; i++) {
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk continue; /* Badly configured zone info */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Need to handle the case for the /dev directory which is
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * parallel to the zone's root directory. So we back up
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * 4 bytes - the strlen of "root".
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk continue; /* Badly configured zone info */
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * If we get a match, the file is in a labeled zone.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk * Return the label of that zone.
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk sizeof (m_label_t)) < 0)
45916cd2fec6e79bca5dee0421bd39e3c2910d1ejpk continue; /* Badly configured zone info */