/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. */ #ifndef _INSTZONES_API_H #define _INSTZONES_API_H /* * Module: instzones_api.h * Group: libinstzones * Description: This module contains the libinstzones API data structures, * constants, and function prototypes. */ /* * required includes */ /* System includes */ #include #include #include #include #include #include #include #include #include /* * C++ prefix */ #ifdef __cplusplus extern "C" { #endif /* function prototypes */ /* PRINTFLIKE1 */ typedef void (*_z_printf_fcn_t)(char *a_format, ...); /* zone list structure */ typedef struct _zoneListElement_t *zoneList_t; /* zone brand list structure */ typedef struct _zoneBrandList zoneBrandList_t; /* flag for zone locking functions */ typedef unsigned long ZLOCKS_T; /* flags for zone locking */ #define ZLOCKS_ZONE_ADMIN ((ZLOCKS_T)0x00000001) /* zone admin */ #define ZLOCKS_PKG_ADMIN ((ZLOCKS_T)0x00000002) /* package admin */ #define ZLOCKS_ALL ((ZLOCKS_T)0xFFFFFFFF) /* all locks */ #define ZLOCKS_NONE ((ZLOCKS_T)0x00000000) /* no locks */ /* * external function definitions */ /* zones.c */ extern boolean_t z_zones_are_implemented(void); extern void z_set_zone_root(const char *zroot); extern boolean_t z_zlist_is_zone_runnable(zoneList_t a_zoneList, int a_zoneIndex); extern boolean_t z_zlist_restore_zone_state(zoneList_t a_zoneList, int a_zoneIndex); extern boolean_t z_zlist_change_zone_state(zoneList_t a_zoneList, int a_zoneIndex, zone_state_t a_newState); extern char *z_get_zonename(void); extern zone_state_t z_zlist_get_current_state(zoneList_t a_zoneList, int a_zoneIndex); extern zone_state_t z_zlist_get_original_state(zoneList_t a_zoneList, int a_zoneIndex); extern int z_zoneExecCmdArray(int *r_status, char **r_results, char *a_inputFile, char *a_path, char *a_argv[], const char *a_zoneName, int *a_fds); extern int z_zone_exec(const char *zonename, const char *path, char *argv[], char *a_stdoutPath, char *a_stderrPath, int *a_fds); extern boolean_t z_create_zone_admin_file(char *a_zoneAdminFilename, char *a_userAdminFilename); extern void z_free_zone_list(zoneList_t a_zoneList); extern zoneList_t z_get_nonglobal_zone_list(void); extern zoneList_t z_get_nonglobal_zone_list_by_brand(zoneBrandList_t *); extern void z_free_brand_list(zoneBrandList_t *a_brandList); extern zoneBrandList_t *z_make_brand_list(const char *brandList, const char *delim); extern boolean_t z_lock_zones(zoneList_t a_zlst, ZLOCKS_T a_lflags); extern boolean_t z_non_global_zones_exist(void); extern boolean_t z_running_in_global_zone(void); extern void z_set_output_functions(_z_printf_fcn_t a_echo_fcn, _z_printf_fcn_t a_echo_debug_fcn, _z_printf_fcn_t a_progerr_fcn); extern int z_set_zone_spec(const char *zlist); extern int z_verify_zone_spec(void); extern boolean_t z_on_zone_spec(const char *zonename); extern boolean_t z_global_only(void); extern boolean_t z_unlock_zones(zoneList_t a_zlst, ZLOCKS_T a_lflags); extern boolean_t z_lock_this_zone(ZLOCKS_T a_lflags); extern boolean_t z_unlock_this_zone(ZLOCKS_T a_lflags); extern char *z_zlist_get_zonename(zoneList_t a_zoneList, int a_zoneId); extern char *z_zlist_get_zonepath(zoneList_t a_zoneList, int a_zoneId); extern char *z_zlist_get_scratch(zoneList_t a_zoneList, int a_zoneId); extern boolean_t z_umount_lz_mount(char *a_lzMountPoint); extern boolean_t z_mount_in_lz(char **r_lzMountPoint, char **r_lzRootPath, char *a_zoneName, char *a_gzPath, char *a_mountPointPrefix); extern boolean_t z_is_zone_branded(char *zoneName); extern boolean_t z_is_zone_brand_in_list(char *zoneName, zoneBrandList_t *brands); extern boolean_t z_zones_are_implemented(void); /* zones_exec.c */ extern int z_ExecCmdArray(int *r_status, char **r_results, char *a_inputFile, char *a_cmd, char **a_args); /*VARARGS*/ extern int z_ExecCmdList(int *r_status, char **r_results, char *a_inputFile, char *a_cmd, ...); /* zones_paths.c */ extern char *z_make_zone_root(char *); extern void z_path_canonize(char *file); extern void z_canoninplace(char *file); /* zones_lofs.c */ extern void z_destroyMountTable(void); extern int z_createMountTable(void); extern int z_isPathWritable(const char *); extern void z_resolve_lofs(char *path, size_t); /* zones_states.c */ extern int UmountAllZones(char *mntpnt); /* * C++ postfix */ #ifdef __cplusplus } #endif #endif /* _INSTZONES_API_H */