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