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.
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.
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]
23 * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
26 #ifndef _INSTZONES_API_H
27 #define _INSTZONES_API_H
31 * Module: instzones_api.h
33 * Description: This module contains the libinstzones API data structures,
34 * constants, and function prototypes.
48 #include <sys/param.h>
49 #include <sys/types.h>
50 #include <sys/ioctl.h>
51 #include <libzonecfg.h>
62 /* function prototypes */
65 typedef void (*_z_printf_fcn_t
)(char *a_format
, ...);
67 /* zone list structure */
69 typedef struct _zoneListElement_t
*zoneList_t
;
71 /* zone brand list structure */
73 typedef struct _zoneBrandList zoneBrandList_t
;
75 /* flag for zone locking functions */
77 typedef unsigned long ZLOCKS_T
;
79 /* flags for zone locking */
81 #define ZLOCKS_ZONE_ADMIN ((ZLOCKS_T)0x00000001) /* zone admin */
82 #define ZLOCKS_PKG_ADMIN ((ZLOCKS_T)0x00000002) /* package admin */
83 #define ZLOCKS_ALL ((ZLOCKS_T)0xFFFFFFFF) /* all locks */
84 #define ZLOCKS_NONE ((ZLOCKS_T)0x00000000) /* no locks */
87 * external function definitions
92 extern boolean_t
z_zones_are_implemented(void);
93 extern void z_set_zone_root(const char *zroot
);
94 extern boolean_t
z_zlist_is_zone_runnable(zoneList_t a_zoneList
,
96 extern boolean_t
z_zlist_restore_zone_state(zoneList_t a_zoneList
,
98 extern boolean_t
z_zlist_change_zone_state(zoneList_t a_zoneList
,
99 int a_zoneIndex
, zone_state_t a_newState
);
100 extern char *z_get_zonename(void);
101 extern zone_state_t
z_zlist_get_current_state(zoneList_t a_zoneList
,
103 extern zone_state_t
z_zlist_get_original_state(zoneList_t a_zoneList
,
105 extern int z_zoneExecCmdArray(int *r_status
, char **r_results
,
106 char *a_inputFile
, char *a_path
, char *a_argv
[],
107 const char *a_zoneName
, int *a_fds
);
108 extern int z_zone_exec(const char *zonename
, const char *path
,
109 char *argv
[], char *a_stdoutPath
,
110 char *a_stderrPath
, int *a_fds
);
111 extern boolean_t
z_create_zone_admin_file(char *a_zoneAdminFilename
,
112 char *a_userAdminFilename
);
113 extern void z_free_zone_list(zoneList_t a_zoneList
);
114 extern zoneList_t
z_get_nonglobal_zone_list(void);
115 extern zoneList_t
z_get_nonglobal_zone_list_by_brand(zoneBrandList_t
*);
116 extern void z_free_brand_list(zoneBrandList_t
*a_brandList
);
117 extern zoneBrandList_t
*z_make_brand_list(const char *brandList
,
119 extern boolean_t
z_lock_zones(zoneList_t a_zlst
, ZLOCKS_T a_lflags
);
120 extern boolean_t
z_non_global_zones_exist(void);
121 extern boolean_t
z_running_in_global_zone(void);
122 extern void z_set_output_functions(_z_printf_fcn_t a_echo_fcn
,
123 _z_printf_fcn_t a_echo_debug_fcn
,
124 _z_printf_fcn_t a_progerr_fcn
);
125 extern int z_set_zone_spec(const char *zlist
);
126 extern int z_verify_zone_spec(void);
127 extern boolean_t
z_on_zone_spec(const char *zonename
);
128 extern boolean_t
z_global_only(void);
129 extern boolean_t
z_unlock_zones(zoneList_t a_zlst
, ZLOCKS_T a_lflags
);
130 extern boolean_t
z_lock_this_zone(ZLOCKS_T a_lflags
);
131 extern boolean_t
z_unlock_this_zone(ZLOCKS_T a_lflags
);
132 extern char *z_zlist_get_zonename(zoneList_t a_zoneList
,
134 extern char *z_zlist_get_zonepath(zoneList_t a_zoneList
,
136 extern char *z_zlist_get_scratch(zoneList_t a_zoneList
,
138 extern boolean_t
z_umount_lz_mount(char *a_lzMountPoint
);
139 extern boolean_t
z_mount_in_lz(char **r_lzMountPoint
,
141 char *a_zoneName
, char *a_gzPath
,
142 char *a_mountPointPrefix
);
143 extern boolean_t
z_is_zone_branded(char *zoneName
);
144 extern boolean_t
z_is_zone_brand_in_list(char *zoneName
,
145 zoneBrandList_t
*brands
);
146 extern boolean_t
z_zones_are_implemented(void);
149 extern int z_ExecCmdArray(int *r_status
, char **r_results
,
150 char *a_inputFile
, char *a_cmd
, char **a_args
);
152 extern int z_ExecCmdList(int *r_status
, char **r_results
,
153 char *a_inputFile
, char *a_cmd
, ...);
156 extern char *z_make_zone_root(char *);
157 extern void z_path_canonize(char *file
);
158 extern void z_canoninplace(char *file
);
161 extern void z_destroyMountTable(void);
162 extern int z_createMountTable(void);
163 extern int z_isPathWritable(const char *);
164 extern void z_resolve_lofs(char *path
, size_t);
167 extern int UmountAllZones(char *mntpnt
);
177 #endif /* _INSTZONES_API_H */