summaryrefslogtreecommitdiff
path: root/usr/src/cmd/zoneadm/zoneadm.h
blob: 86db91a2c98c071578702a229f07c8da1956e8d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */

/*
 * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
 */

#ifndef _ZONEADM_H
#define	_ZONEADM_H

#include <sys/types.h>

#define	CMD_HELP	0
#define	CMD_BOOT	1
#define	CMD_HALT	2
#define	CMD_READY	3
#define	CMD_SHUTDOWN	4
#define	CMD_REBOOT	5
#define	CMD_LIST	6
#define	CMD_VERIFY	7
#define	CMD_INSTALL	8
#define	CMD_UNINSTALL	9
#define	CMD_MOUNT	10
#define	CMD_UNMOUNT	11
#define	CMD_CLONE	12
#define	CMD_MOVE	13
#define	CMD_DETACH	14
#define	CMD_ATTACH	15
#define	CMD_MARK	16
#define	CMD_APPLY	17
#define	CMD_SYSBOOT	18

#define	CMD_MIN		CMD_HELP
#define	CMD_MAX		CMD_SYSBOOT

#if !defined(TEXT_DOMAIN)		/* should be defined by cc -D */
#define	TEXT_DOMAIN	"SYS_TEST"	/* Use this only if it wasn't */
#endif

#define	Z_ERR		1
#define	Z_USAGE		2
#define	Z_FATAL		3

#define	SW_CMP_NONE	0x0
#define	SW_CMP_SRC	0x01
#define	SW_CMP_SILENT	0x02

/*
 * This structure stores information about mounts of interest within an
 * installed zone.
 */
typedef struct zone_mounts {
	/* The zone's zonepath */
	char		*zonepath;

	/* The length of zonepath */
	int		zonepath_len;

	/*
	 * This indicates the number of unexpected mounts that were encountered
	 * in the zone.
	 */
	int		num_unexpected_mounts;

	/*
	 * This is the number of overlay mounts detected on the zone's root
	 * directory.
	 */
	int		num_root_overlay_mounts;

	/*
	 * This is used to track important zone root mount information.  The
	 * mnt_time field isn't used.  If root_mnttab is NULL, then the
	 * associated zone doesn't have a mounted root filesystem.
	 *
	 * NOTE: mnt_mountp is non-NULL iff the zone's root filesystem is a
	 * ZFS filesystem with a non-legacy mountpoint.  In this case, it
	 * refers to a string containing the dataset's mountpoint.
	 */
	struct mnttab	*root_mnttab;
} zone_mounts_t;

/*
 * zoneadm.c
 */
extern char *target_zone;

extern int zfm_print(const struct mnttab *mntp, void *unused);
extern int clone_copy(char *source_zonepath, char *zonepath);
extern char *cmd_to_str(int cmd_num);
extern int do_subproc(char *cmdbuf);
extern int subproc_status(const char *cmd, int status,
    boolean_t verbose_failure);
extern void zerror(const char *fmt, ...);
extern void zperror(const char *str, boolean_t zonecfg_error);
extern void zperror2(const char *zone, const char *str);

/*
 * zfs.c
 */
extern int clone_snapshot_zfs(char *snap_name, char *zonepath,
    char *validatesnap);
extern int clone_zfs(char *source_zonepath, char *zonepath, char *presnapbuf,
    char *postsnapbuf);
extern void create_zfs_zonepath(char *zonepath);
extern int destroy_zfs(char *zonepath);
extern boolean_t is_zonepath_zfs(char *zonepath);
extern int move_zfs(char *zonepath, char *new_zonepath);
extern int verify_datasets(zone_dochandle_t handle);
extern int verify_fs_zfs(struct zone_fstab *fstab);
extern int zone_mounts_init(zone_mounts_t *mounts, const char *zonepath);
extern void zone_mounts_destroy(zone_mounts_t *mounts);
extern int zone_mount_rootfs(zone_mounts_t *mounts, const char *zonepath);
extern int zone_unmount_rootfs(zone_mounts_t *mounts, const char *zonepath,
    boolean_t force);
extern int init_zfs(void);

#endif	/* _ZONEADM_H */