xref: /onnv-gate/usr/src/lib/libinstzones/hdrs/instzones_api.h (revision 10455:2cbe19c439c1)
1*10455SMoriah.Waterland@Sun.COM /*
2*10455SMoriah.Waterland@Sun.COM  * CDDL HEADER START
3*10455SMoriah.Waterland@Sun.COM  *
4*10455SMoriah.Waterland@Sun.COM  * The contents of this file are subject to the terms of the
5*10455SMoriah.Waterland@Sun.COM  * Common Development and Distribution License (the "License").
6*10455SMoriah.Waterland@Sun.COM  * You may not use this file except in compliance with the License.
7*10455SMoriah.Waterland@Sun.COM  *
8*10455SMoriah.Waterland@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*10455SMoriah.Waterland@Sun.COM  * or http://www.opensolaris.org/os/licensing.
10*10455SMoriah.Waterland@Sun.COM  * See the License for the specific language governing permissions
11*10455SMoriah.Waterland@Sun.COM  * and limitations under the License.
12*10455SMoriah.Waterland@Sun.COM  *
13*10455SMoriah.Waterland@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
14*10455SMoriah.Waterland@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*10455SMoriah.Waterland@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
16*10455SMoriah.Waterland@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
17*10455SMoriah.Waterland@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
18*10455SMoriah.Waterland@Sun.COM  *
19*10455SMoriah.Waterland@Sun.COM  * CDDL HEADER END
20*10455SMoriah.Waterland@Sun.COM  */
21*10455SMoriah.Waterland@Sun.COM 
22*10455SMoriah.Waterland@Sun.COM /*
23*10455SMoriah.Waterland@Sun.COM  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
24*10455SMoriah.Waterland@Sun.COM  * Use is subject to license terms.
25*10455SMoriah.Waterland@Sun.COM  */
26*10455SMoriah.Waterland@Sun.COM 
27*10455SMoriah.Waterland@Sun.COM #ifndef _INSTZONES_API_H
28*10455SMoriah.Waterland@Sun.COM #define	_INSTZONES_API_H
29*10455SMoriah.Waterland@Sun.COM 
30*10455SMoriah.Waterland@Sun.COM 
31*10455SMoriah.Waterland@Sun.COM /*
32*10455SMoriah.Waterland@Sun.COM  * Module:	instzones_api.h
33*10455SMoriah.Waterland@Sun.COM  * Group:	libinstzones
34*10455SMoriah.Waterland@Sun.COM  * Description:	This module contains the libinstzones API data structures,
35*10455SMoriah.Waterland@Sun.COM  *		constants, and function prototypes.
36*10455SMoriah.Waterland@Sun.COM  */
37*10455SMoriah.Waterland@Sun.COM 
38*10455SMoriah.Waterland@Sun.COM /*
39*10455SMoriah.Waterland@Sun.COM  * required includes
40*10455SMoriah.Waterland@Sun.COM  */
41*10455SMoriah.Waterland@Sun.COM 
42*10455SMoriah.Waterland@Sun.COM /* System includes */
43*10455SMoriah.Waterland@Sun.COM 
44*10455SMoriah.Waterland@Sun.COM #include <stdarg.h>
45*10455SMoriah.Waterland@Sun.COM #include <stdio.h>
46*10455SMoriah.Waterland@Sun.COM #include <string.h>
47*10455SMoriah.Waterland@Sun.COM #include <termios.h>
48*10455SMoriah.Waterland@Sun.COM #include <sys/mman.h>
49*10455SMoriah.Waterland@Sun.COM #include <sys/param.h>
50*10455SMoriah.Waterland@Sun.COM #include <sys/types.h>
51*10455SMoriah.Waterland@Sun.COM #include <sys/ioctl.h>
52*10455SMoriah.Waterland@Sun.COM #include <libzonecfg.h>
53*10455SMoriah.Waterland@Sun.COM 
54*10455SMoriah.Waterland@Sun.COM /*
55*10455SMoriah.Waterland@Sun.COM  * C++ prefix
56*10455SMoriah.Waterland@Sun.COM  */
57*10455SMoriah.Waterland@Sun.COM 
58*10455SMoriah.Waterland@Sun.COM #ifdef __cplusplus
59*10455SMoriah.Waterland@Sun.COM extern "C" {
60*10455SMoriah.Waterland@Sun.COM #endif
61*10455SMoriah.Waterland@Sun.COM 
62*10455SMoriah.Waterland@Sun.COM 
63*10455SMoriah.Waterland@Sun.COM /* function prototypes */
64*10455SMoriah.Waterland@Sun.COM 
65*10455SMoriah.Waterland@Sun.COM /* PRINTFLIKE1 */
66*10455SMoriah.Waterland@Sun.COM typedef void (*_z_printf_fcn_t)(char *a_format, ...);
67*10455SMoriah.Waterland@Sun.COM 
68*10455SMoriah.Waterland@Sun.COM /* zone list structure */
69*10455SMoriah.Waterland@Sun.COM 
70*10455SMoriah.Waterland@Sun.COM typedef struct _zoneListElement_t *zoneList_t;
71*10455SMoriah.Waterland@Sun.COM 
72*10455SMoriah.Waterland@Sun.COM /* zone brand list structure */
73*10455SMoriah.Waterland@Sun.COM 
74*10455SMoriah.Waterland@Sun.COM typedef struct _zoneBrandList zoneBrandList_t;
75*10455SMoriah.Waterland@Sun.COM 
76*10455SMoriah.Waterland@Sun.COM /* flag for zone locking functions */
77*10455SMoriah.Waterland@Sun.COM 
78*10455SMoriah.Waterland@Sun.COM typedef unsigned long ZLOCKS_T;
79*10455SMoriah.Waterland@Sun.COM 
80*10455SMoriah.Waterland@Sun.COM /* flags for zone locking */
81*10455SMoriah.Waterland@Sun.COM 
82*10455SMoriah.Waterland@Sun.COM #define	ZLOCKS_ZONE_ADMIN	((ZLOCKS_T)0x00000001)	/* zone admin */
83*10455SMoriah.Waterland@Sun.COM #define	ZLOCKS_PKG_ADMIN	((ZLOCKS_T)0x00000002)	/* package admin */
84*10455SMoriah.Waterland@Sun.COM #define	ZLOCKS_PATCH_ADMIN	((ZLOCKS_T)0x00000004)	/* patch admin */
85*10455SMoriah.Waterland@Sun.COM #define	ZLOCKS_ALL		((ZLOCKS_T)0xFFFFFFFF)	/* all locks */
86*10455SMoriah.Waterland@Sun.COM #define	ZLOCKS_NONE		((ZLOCKS_T)0x00000000)	/* no locks */
87*10455SMoriah.Waterland@Sun.COM 
88*10455SMoriah.Waterland@Sun.COM /*
89*10455SMoriah.Waterland@Sun.COM  * external function definitions
90*10455SMoriah.Waterland@Sun.COM  */
91*10455SMoriah.Waterland@Sun.COM 
92*10455SMoriah.Waterland@Sun.COM /* zones.c */
93*10455SMoriah.Waterland@Sun.COM 
94*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_zones_are_implemented(void);
95*10455SMoriah.Waterland@Sun.COM extern void		z_set_zone_root(const char *zroot);
96*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_zlist_is_zone_runnable(zoneList_t a_zoneList,
97*10455SMoriah.Waterland@Sun.COM 				int a_zoneIndex);
98*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_zlist_restore_zone_state(zoneList_t a_zoneList,
99*10455SMoriah.Waterland@Sun.COM 				int a_zoneIndex);
100*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_zlist_change_zone_state(zoneList_t a_zoneList,
101*10455SMoriah.Waterland@Sun.COM 				int a_zoneIndex, zone_state_t a_newState);
102*10455SMoriah.Waterland@Sun.COM extern char		*z_get_zonename(void);
103*10455SMoriah.Waterland@Sun.COM extern zone_state_t	z_zlist_get_current_state(zoneList_t a_zoneList,
104*10455SMoriah.Waterland@Sun.COM 				int a_zoneIndex);
105*10455SMoriah.Waterland@Sun.COM extern char 		**z_zlist_get_inherited_pkg_dirs(zoneList_t a_zoneList,
106*10455SMoriah.Waterland@Sun.COM 				int a_zoneIndex);
107*10455SMoriah.Waterland@Sun.COM extern zone_state_t	z_zlist_get_original_state(zoneList_t a_zoneList,
108*10455SMoriah.Waterland@Sun.COM 				int a_zoneIndex);
109*10455SMoriah.Waterland@Sun.COM extern int		z_zoneExecCmdArray(int *r_status, char **r_results,
110*10455SMoriah.Waterland@Sun.COM 				char *a_inputFile, char *a_path, char *a_argv[],
111*10455SMoriah.Waterland@Sun.COM 				const char *a_zoneName, int *a_fds);
112*10455SMoriah.Waterland@Sun.COM extern int		z_zone_exec(const char *zonename, const char *path,
113*10455SMoriah.Waterland@Sun.COM 				char *argv[], char *a_stdoutPath,
114*10455SMoriah.Waterland@Sun.COM 				char *a_stderrPath, int *a_fds);
115*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_create_zone_admin_file(char *a_zoneAdminFilename,
116*10455SMoriah.Waterland@Sun.COM 				char *a_userAdminFilename);
117*10455SMoriah.Waterland@Sun.COM extern void		z_free_zone_list(zoneList_t a_zoneList);
118*10455SMoriah.Waterland@Sun.COM extern zoneList_t	z_get_nonglobal_zone_list(void);
119*10455SMoriah.Waterland@Sun.COM extern zoneList_t	z_get_nonglobal_zone_list_by_brand(zoneBrandList_t *);
120*10455SMoriah.Waterland@Sun.COM extern void		z_free_brand_list(zoneBrandList_t *a_brandList);
121*10455SMoriah.Waterland@Sun.COM extern zoneBrandList_t	*z_make_brand_list(const char *brandList,
122*10455SMoriah.Waterland@Sun.COM 				const char *delim);
123*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_lock_zones(zoneList_t a_zlst, ZLOCKS_T a_lflags);
124*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_non_global_zones_exist(void);
125*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_running_in_global_zone(void);
126*10455SMoriah.Waterland@Sun.COM extern void		z_set_output_functions(_z_printf_fcn_t a_echo_fcn,
127*10455SMoriah.Waterland@Sun.COM 				_z_printf_fcn_t a_echo_debug_fcn,
128*10455SMoriah.Waterland@Sun.COM 				_z_printf_fcn_t a_progerr_fcn);
129*10455SMoriah.Waterland@Sun.COM extern int		z_set_zone_spec(const char *zlist);
130*10455SMoriah.Waterland@Sun.COM extern int		z_verify_zone_spec(void);
131*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_on_zone_spec(const char *zonename);
132*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_global_only(void);
133*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_unlock_zones(zoneList_t a_zlst, ZLOCKS_T a_lflags);
134*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_lock_this_zone(ZLOCKS_T a_lflags);
135*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_unlock_this_zone(ZLOCKS_T a_lflags);
136*10455SMoriah.Waterland@Sun.COM extern char		*z_zlist_get_zonename(zoneList_t a_zoneList,
137*10455SMoriah.Waterland@Sun.COM 				int a_zoneId);
138*10455SMoriah.Waterland@Sun.COM extern char		*z_zlist_get_zonepath(zoneList_t a_zoneList,
139*10455SMoriah.Waterland@Sun.COM 				int a_zoneId);
140*10455SMoriah.Waterland@Sun.COM extern char		*z_zlist_get_scratch(zoneList_t a_zoneList,
141*10455SMoriah.Waterland@Sun.COM 				int a_zoneId);
142*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_umount_lz_mount(char *a_lzMountPoint);
143*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_mount_in_lz(char **r_lzMountPoint,
144*10455SMoriah.Waterland@Sun.COM 				char **r_lzRootPath,
145*10455SMoriah.Waterland@Sun.COM 				char *a_zoneName, char *a_gzPath,
146*10455SMoriah.Waterland@Sun.COM 				char *a_mountPointPrefix);
147*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_is_zone_branded(char *zoneName);
148*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_is_zone_brand_in_list(char *zoneName,
149*10455SMoriah.Waterland@Sun.COM 			    zoneBrandList_t *brands);
150*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_zones_are_implemented(void);
151*10455SMoriah.Waterland@Sun.COM 
152*10455SMoriah.Waterland@Sun.COM /* zones_exec.c */
153*10455SMoriah.Waterland@Sun.COM extern int		z_ExecCmdArray(int *r_status, char **r_results,
154*10455SMoriah.Waterland@Sun.COM 				char *a_inputFile, char *a_cmd, char **a_args);
155*10455SMoriah.Waterland@Sun.COM /*VARARGS*/
156*10455SMoriah.Waterland@Sun.COM extern int		z_ExecCmdList(int *r_status, char **r_results,
157*10455SMoriah.Waterland@Sun.COM 				char *a_inputFile, char *a_cmd, ...);
158*10455SMoriah.Waterland@Sun.COM 
159*10455SMoriah.Waterland@Sun.COM /* zones_paths.c */
160*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_add_inherited_file_system(
161*10455SMoriah.Waterland@Sun.COM 				char *a_inheritedFileSystem);
162*10455SMoriah.Waterland@Sun.COM extern boolean_t	z_path_is_inherited(char *a_path, char a_ftype,
163*10455SMoriah.Waterland@Sun.COM 				char *a_rootDir);
164*10455SMoriah.Waterland@Sun.COM extern char **		z_get_inherited_file_systems(void);
165*10455SMoriah.Waterland@Sun.COM extern char		*z_make_zone_root(char *);
166*10455SMoriah.Waterland@Sun.COM extern void		z_path_canonize(char *file);
167*10455SMoriah.Waterland@Sun.COM extern void		z_canoninplace(char *file);
168*10455SMoriah.Waterland@Sun.COM extern void		z_free_inherited_file_systems(void);
169*10455SMoriah.Waterland@Sun.COM 
170*10455SMoriah.Waterland@Sun.COM /* zones_lofs.c */
171*10455SMoriah.Waterland@Sun.COM extern void z_destroyMountTable(void);
172*10455SMoriah.Waterland@Sun.COM extern int z_createMountTable(void);
173*10455SMoriah.Waterland@Sun.COM extern int z_isPathWritable(const char *);
174*10455SMoriah.Waterland@Sun.COM extern void z_resolve_lofs(char *path, size_t);
175*10455SMoriah.Waterland@Sun.COM 
176*10455SMoriah.Waterland@Sun.COM /* zones_states.c */
177*10455SMoriah.Waterland@Sun.COM extern int UmountAllZones(char *mntpnt);
178*10455SMoriah.Waterland@Sun.COM 
179*10455SMoriah.Waterland@Sun.COM /*
180*10455SMoriah.Waterland@Sun.COM  * C++ postfix
181*10455SMoriah.Waterland@Sun.COM  */
182*10455SMoriah.Waterland@Sun.COM 
183*10455SMoriah.Waterland@Sun.COM #ifdef __cplusplus
184*10455SMoriah.Waterland@Sun.COM }
185*10455SMoriah.Waterland@Sun.COM #endif
186*10455SMoriah.Waterland@Sun.COM 
187*10455SMoriah.Waterland@Sun.COM #endif /* _INSTZONES_API_H */
188