1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22 /* 23 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 #ifndef _ZONEADM_H 28 #define _ZONEADM_H 29 30 #include <sys/types.h> 31 32 #define CMD_HELP 0 33 #define CMD_BOOT 1 34 #define CMD_HALT 2 35 #define CMD_READY 3 36 #define CMD_REBOOT 4 37 #define CMD_LIST 5 38 #define CMD_VERIFY 6 39 #define CMD_INSTALL 7 40 #define CMD_UNINSTALL 8 41 #define CMD_MOUNT 9 42 #define CMD_UNMOUNT 10 43 #define CMD_CLONE 11 44 #define CMD_MOVE 12 45 #define CMD_DETACH 13 46 #define CMD_ATTACH 14 47 #define CMD_MARK 15 48 #define CMD_APPLY 16 49 #define CMD_SYSBOOT 17 50 51 #define CMD_MIN CMD_HELP 52 #define CMD_MAX CMD_SYSBOOT 53 54 #if !defined(TEXT_DOMAIN) /* should be defined by cc -D */ 55 #define TEXT_DOMAIN "SYS_TEST" /* Use this only if it wasn't */ 56 #endif 57 58 #define Z_ERR 1 59 #define Z_USAGE 2 60 #define Z_FATAL 3 61 62 #define SW_CMP_NONE 0x0 63 #define SW_CMP_SRC 0x01 64 #define SW_CMP_SILENT 0x02 65 66 /* 67 * This structure stores information about mounts of interest within an 68 * installed zone. 69 */ 70 typedef struct zone_mounts { 71 /* The zone's zonepath */ 72 char *zonepath; 73 74 /* The length of zonepath */ 75 int zonepath_len; 76 77 /* 78 * This indicates the number of unexpected mounts that were encountered 79 * in the zone. 80 */ 81 int num_unexpected_mounts; 82 83 /* 84 * This is the number of overlay mounts detected on the zone's root 85 * directory. 86 */ 87 int num_root_overlay_mounts; 88 89 /* 90 * This is used to track important zone root mount information. The 91 * mnt_time field isn't used. If root_mnttab is NULL, then the 92 * associated zone doesn't have a mounted root filesystem. 93 * 94 * NOTE: mnt_mountp is non-NULL iff the zone's root filesystem is a 95 * ZFS filesystem with a non-legacy mountpoint. In this case, it 96 * refers to a string containing the dataset's mountpoint. 97 */ 98 struct mnttab *root_mnttab; 99 } zone_mounts_t; 100 101 /* 102 * zoneadm.c 103 */ 104 extern char *target_zone; 105 106 extern int zfm_print(const struct mnttab *mntp, void *unused); 107 extern int clone_copy(char *source_zonepath, char *zonepath); 108 extern char *cmd_to_str(int cmd_num); 109 extern int do_subproc(char *cmdbuf); 110 extern int subproc_status(const char *cmd, int status, 111 boolean_t verbose_failure); 112 extern void zerror(const char *fmt, ...); 113 extern void zperror(const char *str, boolean_t zonecfg_error); 114 extern void zperror2(const char *zone, const char *str); 115 116 /* 117 * zfs.c 118 */ 119 extern int clone_snapshot_zfs(char *snap_name, char *zonepath, 120 char *validatesnap); 121 extern int clone_zfs(char *source_zonepath, char *zonepath, char *presnapbuf, 122 char *postsnapbuf); 123 extern void create_zfs_zonepath(char *zonepath); 124 extern int destroy_zfs(char *zonepath); 125 extern boolean_t is_zonepath_zfs(char *zonepath); 126 extern int move_zfs(char *zonepath, char *new_zonepath); 127 extern int verify_datasets(zone_dochandle_t handle); 128 extern int verify_fs_zfs(struct zone_fstab *fstab); 129 extern int zone_mounts_init(zone_mounts_t *mounts, const char *zonepath); 130 extern void zone_mounts_destroy(zone_mounts_t *mounts); 131 extern int zone_mount_rootfs(zone_mounts_t *mounts, const char *zonepath); 132 extern int zone_unmount_rootfs(zone_mounts_t *mounts, const char *zonepath, 133 boolean_t force); 134 extern int init_zfs(void); 135 136 #endif /* _ZONEADM_H */