xref: /onnv-gate/usr/src/lib/libinstzones/hdrs/instzones_api.h (revision 12734:76969fc28795)
110455SMoriah.Waterland@Sun.COM /*
210455SMoriah.Waterland@Sun.COM  * CDDL HEADER START
310455SMoriah.Waterland@Sun.COM  *
410455SMoriah.Waterland@Sun.COM  * The contents of this file are subject to the terms of the
510455SMoriah.Waterland@Sun.COM  * Common Development and Distribution License (the "License").
610455SMoriah.Waterland@Sun.COM  * You may not use this file except in compliance with the License.
710455SMoriah.Waterland@Sun.COM  *
810455SMoriah.Waterland@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
910455SMoriah.Waterland@Sun.COM  * or http://www.opensolaris.org/os/licensing.
1010455SMoriah.Waterland@Sun.COM  * See the License for the specific language governing permissions
1110455SMoriah.Waterland@Sun.COM  * and limitations under the License.
1210455SMoriah.Waterland@Sun.COM  *
1310455SMoriah.Waterland@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
1410455SMoriah.Waterland@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1510455SMoriah.Waterland@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
1610455SMoriah.Waterland@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
1710455SMoriah.Waterland@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
1810455SMoriah.Waterland@Sun.COM  *
1910455SMoriah.Waterland@Sun.COM  * CDDL HEADER END
2010455SMoriah.Waterland@Sun.COM  */
2110455SMoriah.Waterland@Sun.COM 
2210455SMoriah.Waterland@Sun.COM /*
23*12734Sgary.pennington@oracle.com  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
2410455SMoriah.Waterland@Sun.COM  */
2510455SMoriah.Waterland@Sun.COM 
2610455SMoriah.Waterland@Sun.COM #ifndef _INSTZONES_API_H
2710455SMoriah.Waterland@Sun.COM #define	_INSTZONES_API_H
2810455SMoriah.Waterland@Sun.COM 
2910455SMoriah.Waterland@Sun.COM 
3010455SMoriah.Waterland@Sun.COM /*
3110455SMoriah.Waterland@Sun.COM  * Module:	instzones_api.h
3210455SMoriah.Waterland@Sun.COM  * Group:	libinstzones
3310455SMoriah.Waterland@Sun.COM  * Description:	This module contains the libinstzones API data structures,
3410455SMoriah.Waterland@Sun.COM  *		constants, and function prototypes.
3510455SMoriah.Waterland@Sun.COM  */
3610455SMoriah.Waterland@Sun.COM 
3710455SMoriah.Waterland@Sun.COM /*
3810455SMoriah.Waterland@Sun.COM  * required includes
3910455SMoriah.Waterland@Sun.COM  */
4010455SMoriah.Waterland@Sun.COM 
4110455SMoriah.Waterland@Sun.COM /* System includes */
4210455SMoriah.Waterland@Sun.COM 
4310455SMoriah.Waterland@Sun.COM #include <stdarg.h>
4410455SMoriah.Waterland@Sun.COM #include <stdio.h>
4510455SMoriah.Waterland@Sun.COM #include <string.h>
4610455SMoriah.Waterland@Sun.COM #include <termios.h>
4710455SMoriah.Waterland@Sun.COM #include <sys/mman.h>
4810455SMoriah.Waterland@Sun.COM #include <sys/param.h>
4910455SMoriah.Waterland@Sun.COM #include <sys/types.h>
5010455SMoriah.Waterland@Sun.COM #include <sys/ioctl.h>
5110455SMoriah.Waterland@Sun.COM #include <libzonecfg.h>
5210455SMoriah.Waterland@Sun.COM 
5310455SMoriah.Waterland@Sun.COM /*
5410455SMoriah.Waterland@Sun.COM  * C++ prefix
5510455SMoriah.Waterland@Sun.COM  */
5610455SMoriah.Waterland@Sun.COM 
5710455SMoriah.Waterland@Sun.COM #ifdef __cplusplus
5810455SMoriah.Waterland@Sun.COM extern "C" {
5910455SMoriah.Waterland@Sun.COM #endif
6010455SMoriah.Waterland@Sun.COM 
6110455SMoriah.Waterland@Sun.COM 
6210455SMoriah.Waterland@Sun.COM /* function prototypes */
6310455SMoriah.Waterland@Sun.COM 
6410455SMoriah.Waterland@Sun.COM /* PRINTFLIKE1 */
6510455SMoriah.Waterland@Sun.COM typedef void (*_z_printf_fcn_t)(char *a_format, ...);
6610455SMoriah.Waterland@Sun.COM 
6710455SMoriah.Waterland@Sun.COM /* zone list structure */
6810455SMoriah.Waterland@Sun.COM 
6910455SMoriah.Waterland@Sun.COM typedef struct _zoneListElement_t *zoneList_t;
7010455SMoriah.Waterland@Sun.COM 
7110455SMoriah.Waterland@Sun.COM /* zone brand list structure */
7210455SMoriah.Waterland@Sun.COM 
7310455SMoriah.Waterland@Sun.COM typedef struct _zoneBrandList zoneBrandList_t;
7410455SMoriah.Waterland@Sun.COM 
7510455SMoriah.Waterland@Sun.COM /* flag for zone locking functions */
7610455SMoriah.Waterland@Sun.COM 
7710455SMoriah.Waterland@Sun.COM typedef unsigned long ZLOCKS_T;
7810455SMoriah.Waterland@Sun.COM 
7910455SMoriah.Waterland@Sun.COM /* flags for zone locking */
8010455SMoriah.Waterland@Sun.COM 
8110455SMoriah.Waterland@Sun.COM #define	ZLOCKS_ZONE_ADMIN	((ZLOCKS_T)0x00000001)	/* zone admin */
8210455SMoriah.Waterland@Sun.COM #define	ZLOCKS_PKG_ADMIN	((ZLOCKS_T)0x00000002)	/* package admin */
8310455SMoriah.Waterland@Sun.COM #define	ZLOCKS_PATCH_ADMIN	((ZLOCKS_T)0x00000004)	/* patch admin */
8410455SMoriah.Waterland@Sun.COM #define	ZLOCKS_ALL		((ZLOCKS_T)0xFFFFFFFF)	/* all locks */
8510455SMoriah.Waterland@Sun.COM #define	ZLOCKS_NONE		((ZLOCKS_T)0x00000000)	/* no locks */
8610455SMoriah.Waterland@Sun.COM 
8710455SMoriah.Waterland@Sun.COM /*
8810455SMoriah.Waterland@Sun.COM  * external function definitions
8910455SMoriah.Waterland@Sun.COM  */
9010455SMoriah.Waterland@Sun.COM 
9110455SMoriah.Waterland@Sun.COM /* zones.c */
9210455SMoriah.Waterland@Sun.COM 
9310455SMoriah.Waterland@Sun.COM extern boolean_t	z_zones_are_implemented(void);
9410455SMoriah.Waterland@Sun.COM extern void		z_set_zone_root(const char *zroot);
9510455SMoriah.Waterland@Sun.COM extern boolean_t	z_zlist_is_zone_runnable(zoneList_t a_zoneList,
9610455SMoriah.Waterland@Sun.COM 				int a_zoneIndex);
9710455SMoriah.Waterland@Sun.COM extern boolean_t	z_zlist_restore_zone_state(zoneList_t a_zoneList,
9810455SMoriah.Waterland@Sun.COM 				int a_zoneIndex);
9910455SMoriah.Waterland@Sun.COM extern boolean_t	z_zlist_change_zone_state(zoneList_t a_zoneList,
10010455SMoriah.Waterland@Sun.COM 				int a_zoneIndex, zone_state_t a_newState);
10110455SMoriah.Waterland@Sun.COM extern char		*z_get_zonename(void);
10210455SMoriah.Waterland@Sun.COM extern zone_state_t	z_zlist_get_current_state(zoneList_t a_zoneList,
10310455SMoriah.Waterland@Sun.COM 				int a_zoneIndex);
10410455SMoriah.Waterland@Sun.COM extern zone_state_t	z_zlist_get_original_state(zoneList_t a_zoneList,
10510455SMoriah.Waterland@Sun.COM 				int a_zoneIndex);
10610455SMoriah.Waterland@Sun.COM extern int		z_zoneExecCmdArray(int *r_status, char **r_results,
10710455SMoriah.Waterland@Sun.COM 				char *a_inputFile, char *a_path, char *a_argv[],
10810455SMoriah.Waterland@Sun.COM 				const char *a_zoneName, int *a_fds);
10910455SMoriah.Waterland@Sun.COM extern int		z_zone_exec(const char *zonename, const char *path,
11010455SMoriah.Waterland@Sun.COM 				char *argv[], char *a_stdoutPath,
11110455SMoriah.Waterland@Sun.COM 				char *a_stderrPath, int *a_fds);
11210455SMoriah.Waterland@Sun.COM extern boolean_t	z_create_zone_admin_file(char *a_zoneAdminFilename,
11310455SMoriah.Waterland@Sun.COM 				char *a_userAdminFilename);
11410455SMoriah.Waterland@Sun.COM extern void		z_free_zone_list(zoneList_t a_zoneList);
11510455SMoriah.Waterland@Sun.COM extern zoneList_t	z_get_nonglobal_zone_list(void);
11610455SMoriah.Waterland@Sun.COM extern zoneList_t	z_get_nonglobal_zone_list_by_brand(zoneBrandList_t *);
11710455SMoriah.Waterland@Sun.COM extern void		z_free_brand_list(zoneBrandList_t *a_brandList);
11810455SMoriah.Waterland@Sun.COM extern zoneBrandList_t	*z_make_brand_list(const char *brandList,
11910455SMoriah.Waterland@Sun.COM 				const char *delim);
12010455SMoriah.Waterland@Sun.COM extern boolean_t	z_lock_zones(zoneList_t a_zlst, ZLOCKS_T a_lflags);
12110455SMoriah.Waterland@Sun.COM extern boolean_t	z_non_global_zones_exist(void);
12210455SMoriah.Waterland@Sun.COM extern boolean_t	z_running_in_global_zone(void);
12310455SMoriah.Waterland@Sun.COM extern void		z_set_output_functions(_z_printf_fcn_t a_echo_fcn,
12410455SMoriah.Waterland@Sun.COM 				_z_printf_fcn_t a_echo_debug_fcn,
12510455SMoriah.Waterland@Sun.COM 				_z_printf_fcn_t a_progerr_fcn);
12610455SMoriah.Waterland@Sun.COM extern int		z_set_zone_spec(const char *zlist);
12710455SMoriah.Waterland@Sun.COM extern int		z_verify_zone_spec(void);
12810455SMoriah.Waterland@Sun.COM extern boolean_t	z_on_zone_spec(const char *zonename);
12910455SMoriah.Waterland@Sun.COM extern boolean_t	z_global_only(void);
13010455SMoriah.Waterland@Sun.COM extern boolean_t	z_unlock_zones(zoneList_t a_zlst, ZLOCKS_T a_lflags);
13110455SMoriah.Waterland@Sun.COM extern boolean_t	z_lock_this_zone(ZLOCKS_T a_lflags);
13210455SMoriah.Waterland@Sun.COM extern boolean_t	z_unlock_this_zone(ZLOCKS_T a_lflags);
13310455SMoriah.Waterland@Sun.COM extern char		*z_zlist_get_zonename(zoneList_t a_zoneList,
13410455SMoriah.Waterland@Sun.COM 				int a_zoneId);
13510455SMoriah.Waterland@Sun.COM extern char		*z_zlist_get_zonepath(zoneList_t a_zoneList,
13610455SMoriah.Waterland@Sun.COM 				int a_zoneId);
13710455SMoriah.Waterland@Sun.COM extern char		*z_zlist_get_scratch(zoneList_t a_zoneList,
13810455SMoriah.Waterland@Sun.COM 				int a_zoneId);
13910455SMoriah.Waterland@Sun.COM extern boolean_t	z_umount_lz_mount(char *a_lzMountPoint);
14010455SMoriah.Waterland@Sun.COM extern boolean_t	z_mount_in_lz(char **r_lzMountPoint,
14110455SMoriah.Waterland@Sun.COM 				char **r_lzRootPath,
14210455SMoriah.Waterland@Sun.COM 				char *a_zoneName, char *a_gzPath,
14310455SMoriah.Waterland@Sun.COM 				char *a_mountPointPrefix);
14410455SMoriah.Waterland@Sun.COM extern boolean_t	z_is_zone_branded(char *zoneName);
14510455SMoriah.Waterland@Sun.COM extern boolean_t	z_is_zone_brand_in_list(char *zoneName,
14610455SMoriah.Waterland@Sun.COM 			    zoneBrandList_t *brands);
14710455SMoriah.Waterland@Sun.COM extern boolean_t	z_zones_are_implemented(void);
14810455SMoriah.Waterland@Sun.COM 
14910455SMoriah.Waterland@Sun.COM /* zones_exec.c */
15010455SMoriah.Waterland@Sun.COM extern int		z_ExecCmdArray(int *r_status, char **r_results,
15110455SMoriah.Waterland@Sun.COM 				char *a_inputFile, char *a_cmd, char **a_args);
15210455SMoriah.Waterland@Sun.COM /*VARARGS*/
15310455SMoriah.Waterland@Sun.COM extern int		z_ExecCmdList(int *r_status, char **r_results,
15410455SMoriah.Waterland@Sun.COM 				char *a_inputFile, char *a_cmd, ...);
15510455SMoriah.Waterland@Sun.COM 
15610455SMoriah.Waterland@Sun.COM /* zones_paths.c */
15710455SMoriah.Waterland@Sun.COM extern char		*z_make_zone_root(char *);
15810455SMoriah.Waterland@Sun.COM extern void		z_path_canonize(char *file);
15910455SMoriah.Waterland@Sun.COM extern void		z_canoninplace(char *file);
16010455SMoriah.Waterland@Sun.COM 
16110455SMoriah.Waterland@Sun.COM /* zones_lofs.c */
16210455SMoriah.Waterland@Sun.COM extern void z_destroyMountTable(void);
16310455SMoriah.Waterland@Sun.COM extern int z_createMountTable(void);
16410455SMoriah.Waterland@Sun.COM extern int z_isPathWritable(const char *);
16510455SMoriah.Waterland@Sun.COM extern void z_resolve_lofs(char *path, size_t);
16610455SMoriah.Waterland@Sun.COM 
16710455SMoriah.Waterland@Sun.COM /* zones_states.c */
16810455SMoriah.Waterland@Sun.COM extern int UmountAllZones(char *mntpnt);
16910455SMoriah.Waterland@Sun.COM 
17010455SMoriah.Waterland@Sun.COM /*
17110455SMoriah.Waterland@Sun.COM  * C++ postfix
17210455SMoriah.Waterland@Sun.COM  */
17310455SMoriah.Waterland@Sun.COM 
17410455SMoriah.Waterland@Sun.COM #ifdef __cplusplus
17510455SMoriah.Waterland@Sun.COM }
17610455SMoriah.Waterland@Sun.COM #endif
17710455SMoriah.Waterland@Sun.COM 
17810455SMoriah.Waterland@Sun.COM #endif /* _INSTZONES_API_H */
179