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