Hallo, dies ist ein Test.
PWD: /www/data-lst1/unixsoft/unixsoft/kaempfer/.public_html
Running in File Mode
Relative path: ./../../../../../../usr/include/./libzonecfg.h
Real path: /usr/include/libzonecfg.h
Zurück
/* * Copyright (c) 2003, 2023, Oracle and/or its affiliates. */ #ifndef _LIBZONECFG_H #define _LIBZONECFG_H /* * INTERFACES DEFINED IN THIS FILE DO NOT CONSTITUTE A PUBLIC INTERFACE. * * Do not consume these interfaces; your program will break in the future * (even in a patch) if you do. */ /* * Zone configuration header file. */ #ifdef __cplusplus extern "C" { #endif /* sys/socket.h is required by net/if.h, which has a constant needed here */ #include <sys/param.h> #include <sys/fstyp.h> #include <sys/mount.h> #include <sys/types.h> #include <priv.h> #include <netinet/in.h> #include <sys/socket.h> #include <net/if.h> #include <stdio.h> #include <rctl.h> #include <zone.h> #include <sys/uuid.h> #include <sys/mnttab.h> #include <limits.h> #include <utmpx.h> #include <sys/mac.h> #include <sys/mac_flow.h> #include <suri.h> #include <pool.h> #include <sys/list.h> #include <libibadm.h> #include <libbrand.h> #include <sys/zvmm/host_compat.h> #include <libuutil.h> #include <libdlvlan.h> #include <libdladm.h> #include <sys/bitset.h> #include <sys/bitmap.h> #define MAX_NESTED_RESOURCES 4 #define ZONE_ID_UNDEFINED -1 #define ZONE_ID_NOT_SET -2 /* * WARNING: do not renumber or remove these: they form part of the stable API * that RAD uses. */ #define Z_OK 0 #define Z_EMPTY_DOCUMENT 3001 /* XML doc root element is null */ #define Z_WRONG_DOC_TYPE 3002 /* top-level XML doc element != zone */ #define Z_BAD_PROPERTY 3003 /* libxml-level property problem */ #define Z_TEMP_FILE 3004 /* problem creating temporary file */ #define Z_SAVING_FILE 3005 /* libxml error saving or validating */ #define Z_NO_ENTRY 3006 /* no such entry */ #define Z_BOGUS_ZONE_NAME 3007 /* illegal zone name */ #define Z_REQD_RESOURCE_MISSING 3008 /* required resource missing */ #define Z_REQD_PROPERTY_MISSING 3009 /* required property missing */ #define Z_BAD_HANDLE 3010 /* bad document handle */ #define Z_NOMEM 3011 /* out of memory (like ENOMEM) */ #define Z_INVAL 3012 /* invalid argument (like EINVAL) */ #define Z_ACCES 3013 /* permission denied (like EACCES) */ #define Z_TOO_BIG 3014 /* string won't fit in char array */ #define Z_MISC_FS 3015 /* miscellaneous file-system error */ #define Z_NO_ZONE 3016 /* no such zone */ #define Z_NO_RESOURCE_TYPE 3017 /* no/wrong resource type */ #define Z_NO_RESOURCE_ID 3018 /* no/wrong resource id */ #define Z_NO_PROPERTY_TYPE 3019 /* no/wrong property type */ #define Z_NO_PROPERTY_ID 3020 /* no/wrong property id */ #define Z_BAD_ZONE_STATE 3021 /* zone state invalid for given task */ #define Z_INVALID_DOCUMENT 3022 /* libxml can't validate against DTD */ #define Z_NAME_IN_USE 3023 /* zone name already in use (rename) */ #define Z_NO_SUCH_ID 3024 /* delete_index: no old ID */ #define Z_UPDATING_INDEX 3025 /* add/modify/delete_index problem */ #define Z_LOCKING_FILE 3026 /* problem locking index file */ #define Z_UNLOCKING_FILE 3027 /* problem unlocking index file */ #define Z_SYSTEM 3028 /* consult errno instead */ #define Z_INSUFFICIENT_SPEC 3029 /* resource insufficiently specified */ #define Z_RESOLVED_PATH 3034 /* resolved path mismatch */ #define Z_IPV6_ADDR_PREFIX_LEN 3035 /* IPv6 address prefix length needed */ #define Z_BOGUS_ADDRESS 3036 /* not IPv[4|6] address or host name */ #define Z_PRIV_PROHIBITED 3037 /* specified privilege is prohibited */ #define Z_PRIV_REQUIRED 3038 /* required privilege is missing */ #define Z_PRIV_UNKNOWN 3039 /* specified privilege is unknown */ #define Z_BRAND_ERROR 3040 /* brand-specific error */ #define Z_INCOMPATIBLE 3041 /* incompatible settings */ #define Z_ALIAS_DISALLOW 3042 /* rctl alias disallowed */ #define Z_CLEAR_DISALLOW 3043 /* clear property disallowed */ #define Z_POOL 3044 /* generic libpool error */ #define Z_POOLS_NOT_ACTIVE 3045 /* pool service not enabled */ #define Z_POOL_ENABLE 3046 /* pools enable failed */ #define Z_NO_POOL 3047 /* no such pool configured */ #define Z_POOL_CREATE 3048 /* pool create failed */ #define Z_POOL_BIND 3049 /* pool bind failed */ #define Z_INVALID_PROPERTY 3050 /* invalid property value */ #define Z_POSSIBLE_CONFLICT 3051 /* possible conflicts in /dev/zvol */ #define Z_STORAGE_MISC 3052 /* misc. storage resource error */ #define Z_STORAGE_INUSE 3053 /* storage resource in use */ #define Z_STORAGE_AGAIN 3054 /* like EAGAIN */ #define Z_DUP_PROPERTY 3055 /* duplicate property value */ #define Z_BRAND_FIXED_CFG 3056 /* the property has been fixed */ #define Z_BRAND_DISABLED_CFG 3057 /* the res/prop has been disabled */ #define Z_BRAND_DISABLED_VAL 3058 /* the prop val has been disabled */ #define Z_STALE_CFG 3059 /* zone cfg externally modified */ #define Z_UNIFIED_ARCHIVE 3060 /* ua_log() has already handled error */ #define Z_LIVE_DISABLED_CFG 3061 /* live mode does not support res */ #define Z_LIVE_DISABLED_VAL 3062 /* live mode does not support value */ #define Z_DUP_RESOURCE 3063 /* resource already exists */ #define Z_GPT_PARTITION 3064 /* unable to find gpt partition */ #define Z_NO_ENTROPY 3065 /* /dev/random is empty */ /* * invalid pool name and system.zone-fallback-to-default false * zone-fallback-to-default false */ #define Z_POOL_NO_FALL_BACK_TO_DEFAULT 3066 #define Z_ROOTZPOOL_NOTEMPTY 3067 /* zpool not empty */ #define Z_LIBSCF 3068 /* Check scf_error() */ #define Z_JSON 3069 /* JSON related problems */ #define Z_NO_CONFIG 3070 /* zone in index but no config file */ /* invalid pool name and should use default pool instead. */ #define Z_POOL_FALL_BACK_TO_DEFAULT 3071 #define Z_POOL_VERIFY 3072 /* Can't verify pool name */ #define Z_KSTAT_OPENFAIL 3073 /* Can't open kstat */ #define Z_INVAL_PSET 3074 /* Invalid pset format */ #define Z_NO_BRAND 3075 /* Brand is not installed */ #define Z_POOL_INCORRECT_CFG 3076 /* Wrong pool configuration */ /* * Zone states, as seen from user space * * When adding, removing, or changing state definitions, consider the following: * * 1. Contracts exist on zone_get_state() which returns these state numbers. * The suggested mechanism for libzonecfg contract consumers to determine * the state is by using get_zone_state_str(). Alternatively, the value * returned from zone_get_state() may be treated as an opaque value that is * passed to zone_state_str(). The values returned by get_zone_state_str() * and zone_state_str() are the same string as is returned in the state * field of zoneadm(8)'s list subcommand's output. * 2. State numbers are passed to brand scripts. As states are added or * removed, brand scripts may require updates. Pay particular attention * to usr/src/lib/brand/<brands>/zone/{pre,post}state.ksh. * 3. When adding states, update zone_states array in libzonecfg.c. */ typedef enum { ZONE_STATE_CONFIGURED = 0, ZONE_STATE_INCOMPLETE, ZONE_STATE_UNAVAILABLE, ZONE_STATE_INSTALLED, ZONE_STATE_READY, ZONE_STATE_RUNNING, ZONE_STATE_SHUTTING_DOWN, ZONE_STATE_DOWN, ZONE_STATE_MOUNTED, /* Not actually a state, used as a flag. Must be last. */ ZONE_STATE_INVALID } zone_state_t; /* For manipulating with zone index entries */ typedef enum { PZE_MODIFY = -1, PZE_REMOVE = 0, PZE_ADD = 1 } zoneent_op_t; #define ZONE_STATE_MAXSTRLEN 14 #define ZONE_KEY_BITS 128 /* Key is base64 encoded and starts with "{base64}". See sasl_encode64(). */ #define ZONE_KEY_MAXSTRLEN (9 + ((ZONE_KEY_BITS / 8 + 2) / 3 * 4)) #define ZONE_CRYPT_MAC_SIZE 16 #define LIBZONECFG_PATH "libzonecfg.so.1" #define ZONE_CONFIG_ROOT "/etc/zones" #define ZONE_INDEX_ROOT "/var/share/zones" #define ZONE_KEY_DIR ZONE_CONFIG_ROOT "/keys" #define ZONE_INDEX_FILE ZONE_INDEX_ROOT "/index.json" #define ETC_ZONE_INDEX_FILE ZONE_CONFIG_ROOT "/index" #define MAXUSERNAME MAXNAMELEN #define MAXAUTHS 4096 /* Zones Delegated Restarter and Zone Instances FMRIs */ #define ZONE_SERVICE_FMRI "svc:/system/zones/zone" #define ZONES_RESTARTER_FMRI "svc:/system/zones:default" /* * Zones SMF FMRIs are of the form ZONE_SERVICE_FMRI + ':' + <zonename>, where * zonename is a NULL terminated string. The max buffer size is given by the * define below. Note that the NULL terminating byte of ZONE_SERVICE_FMRI is * replaced by ':'. We don't have to worry about going over the SMF limit as * long as we don't make ZONENAME_MAX too big. Currently the SMF limit, * dynamically calculated by scf_limit(SCF_LIMIT_MAX_FMRI_LENGTH) is 1214 bytes. */ #define ZONEFMRI_MAX (sizeof (ZONE_SERVICE_FMRI) + ZONENAME_MAX) /* Owner, group, and mode (defined by packaging) for the config directory */ #define ZONE_CONFIG_UID 0 /* root */ #define ZONE_CONFIG_GID 3 /* sys */ #define ZONE_CONFIG_MODE 0755 /* Owner, group, and mode (defined by packaging) for the index file */ #define ZONE_INDEX_UID 0 /* root */ #define ZONE_INDEX_GID 3 /* sys */ #define ZONE_INDEX_MODE 0644 /* * Reserved zone root zpool/dataset name, used in zonecfg and zoneadm. */ #define ZONE_RZPNAME "rpool" /* * Shortened alias names for the zones rctls. */ #define ALIAS_MAXLWPS "max-lwps" #define ALIAS_MAXSHMMEM "max-shm-memory" #define ALIAS_MAXSHMIDS "max-shm-ids" #define ALIAS_MAXMSGIDS "max-msg-ids" #define ALIAS_MAXSEMIDS "max-sem-ids" #define ALIAS_MAXLOCKEDMEM "locked" #define ALIAS_MAXSWAP "swap" #define ALIAS_SHARES "cpu-shares" #define ALIAS_CPUCAP "cpu-cap" #define ALIAS_MAXPROCS "max-processes" #define ALIAS_ADI_MD "max-adi-metadata-memory" /* Default name for zone detached manifest */ #define ZONE_DETACHED_CFG_NAME "SUNWdetached.xml" /* Default name for suspended boot snapshot */ #define ZONE_SUSPENDED_CFG_NAME "SUNWsuspended.xml" /* * Bit flag definitions for passing into libzonecfg functions. */ #define ZONE_DRY_RUN 0x01 /* Length of annotations which do not carry path. */ #define DEVANN_LEN 128 /* The empty string and "none" are equivalent and indicate a r/w zone. */ #define ZONECFG_READ_WRITE_PROFNAME(prof) \ ((prof)[0] == '\0' || strcmp((prof), "none") == 0) /* * Macros representing max. sizes for net and anet resource properties */ /* * Our limit of 50 allowed-addresses should be more than enough. Generally, * users may need at most two allowed-addresses. Same for default routers. */ #define ALLOWED_ADDRS_BUFSZ (50 * INET6_ADDRSTRLEN) #define DEFROUTERS_BUFSZ ALLOWED_ADDRS_BUFSZ /* Allow at the most 20 allowed-dhcp-cids. */ #define ALLOWED_DHCP_CIDS_BUFSZ (20 * MPT_MAXCIDLEN) /* * Today we have 4 protection. Our limit of 256 is more than * enough to handle them. */ #define MAX_LINK_PROTECTIONS 256 /* * Properties such priority, vlan-id, mtu, maxbw, rings are eventually * stored as uint64_t. */ #define MAX_NET_UINT64_STR 23 #define ALLOWED_VLANID_ANY_KEY "any" /* World Wide Name length */ #define VPORT_WWN_LEN 16 #define VPORT_WWN_STR_LEN (VPORT_WWN_LEN + 1) /* Maximum FC controller name length */ #define VPORT_MAX_CONTROLLER_LEN 8 /* Allow 64 MAC addresses per anet. */ #define MAC_ADDRESSES_PER_ANET 64 /* Size required to store up to 64 MAC addresses or keywords. */ /* 1 for the seperating comma. */ #define MAC_ADDRESSES_BUFSIZ (MAC_ADDRESSES_PER_ANET * (MAXMACADDRLEN + 1)) /* Size required to store up to 64 factory MAC address slots. */ /* 1 for the seperating comma. */ #define MAC_SLOT_BUFSIZ (MAC_ADDRESSES_PER_ANET * (MAX_NET_UINT64_STR + 1)) /* Maximum length of allowed-mac-address */ #define MAX_ALLOWED_MAC_ADDRESS_LEN 5 #define MACADDR_STRSIZE 18 #define ALLOWED_MACADDR_ANY_KEY "any" #define ALLOWED_MACADDR_ANY_VAL "00:00:00:00:00:00" /* * pkey string is made up of "0x", followed by pkey in hex (maximum of 4 * characters), followed by '\0'. */ #define MAX_PKEY_STR 7 #define MAX_UINT32_STRLEN 11 /* 10 (MAX_UINT32 = 4294967295) + 1 (\0) */ /* linkmode is set to either "cm" or "ud" */ #define MAX_LINKMODE_STR 3 #define LINKMODE_CM "cm" /* IB connected mode */ #define LINKMODE_UD "ud" /* IB unreliable datagram mode */ /* vboot policy is set to either "none", "warning" or "enforce" */ #define MAXPOLICYLEN 8 /* may autopush up to MAXAPUSH(8) modules, FMNAMESZ(8)+1 char per module */ #define MAX_AUTOPUSH_BUFSIZ 72 /* Nesting Levels with resources */ #define GLOBAL_RESOURCE (-1) #define NON_NESTED_RESOURCE 0 #define LEVEL1_NESTED_RESOURCE 1 /* Template tokens and correspoding values */ #define TOK_ZONENAME ("%{zonename}") #define TOK_RESOURCEID ("%{resource-id}") #define TOK_NETWORKID ("%{network-id}") #define TOK_ID ("%{id}") #define TOK_GLOBAL_ROOTZPOOL ("%{global-rootzpool}") #define TOK_PWWN ("%{pwwn}") #define CFGTOK_NONE 0x0 #define CFGTOK_ZONENAME 0x1 #define CFGTOK_RESOURCEID 0x2 #define CFGTOK_NETWORKID 0x4 #define CFGTOK_ID 0x8 #define CFGTOK_GLOBAL_ROOTZPOOL 0x10 #define CFGTOK_PWWN 0x20 #define CFGTOK_MAX CFGTOK_PWWN #define CFGTOK_ALL (((uint64_t)1 << (CFGTOK_MAX)) - 1) #define CFGTOK_ALL_BUT_ID ((CFGTOK_ALL) & (~(CFGTOK_ID))) #define CFGTOK_ALL_BUT(exclude) ((CFGTOK_ALL) & (~(exclude))) /* * Properties set to this value should be replaced with valid values * in order to proceed with the zone installation. Only some properties can * be set to this value. */ #define PROP_UNSET "unset" #define ANET_PROP_FIELD(tab, ap) ((char *)(tab) + ((ap)->offset)) #define ANET_IS_EVS(a) ((a)->zone_anet_evs[0] != '\0') #define ANET_IS_IPOIB(a) ((a)->zone_anet_pkey[0] != '\0') #define KZ_ANET(a) ((a)->zone_anet_id[0] != '\0') /* * This structure represents information for a single entry in the * /var/share/zones/index.json file. * * The integer field expresses the current values on a get. * On a put, it represents the new values if >= 0 or "don't change" if < 0. */ struct zoneent { char zone_name[ZONENAME_MAX]; /* name of the zone */ int zone_state; /* configured|incomplete|unavailable|installed */ char zone_path[MAXPATHLEN]; /* path to zone storage */ uuid_t zone_uuid; /* unique ID for zone */ char zone_newname[ZONENAME_MAX]; /* for doing renames */ }; typedef struct zone_dochandle *zone_dochandle_t; /* opaque handle */ typedef struct zone_fsopt { struct zone_fsopt *zone_fsopt_next; char zone_fsopt_opt[MAX_MNTOPT_STR]; } zone_fsopt_t; typedef struct zone_fstab { char zone_fs_special[MAXPATHLEN]; /* special file */ char zone_fs_dir[MAXPATHLEN]; /* mount point */ char zone_fs_type[FSTYPSZ]; /* e.g. ufs */ zone_fsopt_t *zone_fs_options; /* mount options */ char zone_fs_raw[MAXPATHLEN]; /* device to fsck */ char zone_fs_tmp_id[MAX_UINT32_STRLEN]; } zone_fstab_t; typedef struct zone_nettab { char zone_net_address[INET6_ADDRSTRLEN]; /* shared-ip only */ char zone_net_allowed_addr[ALLOWED_ADDRS_BUFSZ]; /* excl-ip only */ char zone_net_physical[LIFNAMSIZ]; char zone_net_defrouter[DEFROUTERS_BUFSZ]; char zone_net_configure_allowed_addr[6]; /* "true" or "false" */ /* used as annotation so sized for convenience */ char zone_net_id[DEVANN_LEN]; char zone_net_tmp_id[MAX_UINT32_STRLEN]; } zone_nettab_t; typedef struct zone_allowed_macaddr { char allowed_maddrstr[MACADDR_STRSIZE]; list_node_t list_node; } zone_allowed_macaddr_t; typedef struct zone_anetmactab { char zone_anetmac_auto_mac_addr[MAC_ADDRESSES_BUFSIZ]; char zone_anetmac_mac_addr[MAC_ADDRESSES_BUFSIZ]; char zone_anetmac_mac_prefix[MAC_ADDRESSES_BUFSIZ]; /* used as annotation so sized for convenience */ char zone_anetmac_id[DEVANN_LEN]; char zone_anetmac_tmp_id[MAX_UINT32_STRLEN]; list_t zone_anetmac_allowed_macaddr; list_node_t list_node; } zone_anetmactab_t; typedef struct zone_allowed_vid_range_s { uint16_t avr_min; uint16_t avr_max; } zone_allowed_vid_range_t; typedef struct zone_allowed_vids { char allowed_vidstr[MAX_UINT32_STRLEN]; zone_allowed_vid_range_t allowed_vidrange; list_node_t list_node; } zone_allowed_vids_t; typedef struct zone_anetvlantab { char zone_anetvlan_vlan_id[MAX_NET_UINT64_STR]; char zone_anetvlan_tmp_id[MAX_UINT32_STRLEN]; list_t zone_anetvlan_allowed_vids; list_node_t list_node; } zone_anetvlantab_t; /* * Since iov is incompatible with most anet properties, whoever adds new * field(s) to this structure must also update vplat.c:validate_iov_properties() * if necessary. * Since evs and vport are incompatible with most anet properties, * whoever adds new field(s) to this structure must also update * zonecfg_manip.c:validate_evs_properties() if necessary. */ typedef struct zone_anettab { char zone_anet_linkname[MAXLINKNAMELEN]; char zone_anet_lower_link[MAXLINKNAMELEN]; char zone_anet_allowed_addr[ALLOWED_ADDRS_BUFSZ]; char zone_anet_defrouter[DEFROUTERS_BUFSZ]; char zone_anet_configure_allowed_addr[6]; /* "true" or "false" */ char zone_anet_allowed_dhcp_cids[ALLOWED_DHCP_CIDS_BUFSZ]; char zone_anet_link_protection[MAX_LINK_PROTECTIONS]; char zone_anet_auto_mac_addr[MAC_ADDRESSES_BUFSIZ]; char zone_anet_mac_addr[MAC_ADDRESSES_BUFSIZ]; char zone_anet_mac_prefix[MAC_ADDRESSES_BUFSIZ]; char zone_anet_mac_slot[MAC_SLOT_BUFSIZ]; char zone_anet_vlan_id[MAX_NET_UINT64_STR]; char zone_anet_priority[MAX_NET_UINT64_STR]; char zone_anet_rxrings[MAX_NET_UINT64_STR]; char zone_anet_txrings[MAX_NET_UINT64_STR]; char zone_anet_maxbw[MAX_NET_UINT64_STR]; char zone_anet_mtu[MAX_NET_UINT64_STR]; char zone_anet_rxfanout[MAX_NET_UINT64_STR]; char zone_anet_vsitypeid[MAX_NET_UINT64_STR]; char zone_anet_vsivers[MAX_NET_UINT64_STR]; char zone_anet_vsimgrid[MAX_NET_UINT64_STR]; char zone_anet_etsbwlcl[MAX_NET_UINT64_STR]; char zone_anet_cos[MAX_NET_UINT64_STR]; char zone_anet_pkey[MAX_PKEY_STR]; char zone_anet_linkmode[MAX_LINKMODE_STR]; char zone_anet_evs[MAXNAMELEN]; char zone_anet_vport[MAXNAMELEN]; char zone_anet_iov[MAXNAMELEN]; char zone_anet_lro[8]; /* "on", "off" or "auto" */ char zone_anet_rg[MAXNAMELEN]; char zone_anet_autopush[MAX_AUTOPUSH_BUFSIZ]; /* used as annotation so sized for convenience */ char zone_anet_id[DEVANN_LEN]; char zone_anet_tmp_id[MAX_UINT32_STRLEN]; list_t zone_anet_macs; char zone_anet_bwshare[MAX_NET_UINT64_STR]; list_t zone_anet_vlans; } zone_anettab_t; #define MAX_PORT_PER_IB 2 #define MAXOVERHCALEN 150 #define MAX_PROPS_PER_PORT 64 #define MAXSMIENABLEDLEN 9 typedef struct zone_ibporttab { char zone_ibport_pkey[MAX_PROPS_PER_PORT * MAX_PKEY_STR]; char zone_ibport_id[DEVANN_LEN]; char zone_ibport_tmp_id[MAX_UINT32_STRLEN]; list_node_t list_node; } zone_ibporttab_t; typedef struct zone_ibtab { char zone_ib_overhca[MAXOVERHCALEN]; char zone_ib_smi_enabled[MAXSMIENABLEDLEN]; char zone_ib_vhca[MAXOVERHCALEN]; char zone_ib_id[DEVANN_LEN]; char zone_ib_tmp_id[MAX_UINT32_STRLEN]; char zone_ib_dpath[MAXPATHLEN]; list_t zone_ib_port; } zone_ibtab_t; #define ZONE_MAXGROUPINGLEN 32 #define ZONE_MAXDEPNAME 120 #define ZONE_MAXFMRILEN 2048 #define ZONE_SMF_DEP_PG_PREFIX "SMF-DEP-" struct zone_deptab { char zone_dep_fmri[ZONE_MAXFMRILEN]; char zone_dep_name[ZONE_MAXDEPNAME]; char zone_dep_grouping[ZONE_MAXGROUPINGLEN]; char zone_dep_tmp_id[MAX_UINT32_STRLEN]; }; /* * NB: changing/adding fields to this struct will likely require * changes to the following functions: * zonecfg_lookup_dev()/zonecfg_dup_dev()/zonecfg_getdevent(). */ typedef struct zone_devtab { char zone_dev_match[MAXPATHLEN]; char zone_dev_storage[SURI_MAX_URI_LEN]; char zone_dev_create_size[SURI_MAX_UINT64_LEN]; int zone_dev_flags; /* not member of the XML description */ /* these four used as annotation so sized for convenience */ char zone_dev_direct_io[SURI_MAX_URI_LEN]; char zone_dev_partition[DEVANN_LEN]; char zone_dev_raw_io[DEVANN_LEN]; char zone_dev_id[DEVANN_LEN]; char zone_dev_bootpri[DEVANN_LEN]; char zone_dev_tmp_id[MAX_UINT32_STRLEN]; char zone_dev_mhd[DEVANN_LEN]; char zone_dev_removable[DEVANN_LEN]; } zone_devtab_t; typedef struct zone_rctlvaltab { char zone_rctlval_priv[MAXNAMELEN]; char zone_rctlval_limit[MAXNAMELEN]; char zone_rctlval_action[MAXNAMELEN]; struct zone_rctlvaltab *zone_rctlval_next; } zone_rctlvaltab_t; typedef struct zone_rctltab { char zone_rctl_name[MAXNAMELEN]; char zone_rctl_tmp_id[MAX_UINT32_STRLEN]; struct zone_rctlvaltab *zone_rctl_valptr; } zone_rctltab_t; typedef struct zone_attrtab { char zone_attr_name[MAXNAMELEN]; char zone_attr_type[MAXNAMELEN]; char zone_attr_value[2 * BUFSIZ]; char zone_attr_tmp_id[MAX_UINT32_STRLEN]; } zone_attrtab_t; typedef struct zone_dstab { char zone_dataset_name[MAXNAMELEN]; char zone_dataset_alias[MAXNAMELEN]; char zone_dataset_tmp_id[MAX_UINT32_STRLEN]; } zone_dstab_t; typedef struct zone_psettab { char zone_ncpu_min[MAXNAMELEN]; char zone_ncpu_max[MAXNAMELEN]; char zone_cpus[MAXNAMELEN]; char zone_cores[MAXNAMELEN]; char zone_sockets[MAXNAMELEN]; char zone_importance[MAXNAMELEN]; char zone_size[MAXNAMELEN]; /* number of cpus in pset */ } zone_psettab_t; typedef struct zone_mcaptab { char zone_physmem_cap[MAXNAMELEN]; char zone_physmem_pgsz_policy[MAXNAMELEN]; /* kernel zones only */ char zone_physmem_mrp_svc[MAXNAMELEN]; /* kernel zones only */ char zone_physmem_pgsz[MAXNAMELEN]; /* kernel zones only */ char zone_physmem_memlzr[MAXNAMELEN]; /* kernel zones only */ } zone_mcaptab_t; typedef struct zone_devpermtab { char zone_devperm_name[MAXPATHLEN]; uid_t zone_devperm_uid; gid_t zone_devperm_gid; mode_t zone_devperm_mode; char *zone_devperm_acl; } zone_devpermtab_t; typedef struct zone_admintab { char zone_admin_user[MAXUSERNAME]; char zone_admin_auths[MAXAUTHS]; char zone_admin_tmp_id[MAX_UINT32_STRLEN]; } zone_admintab_t; typedef struct zone_vcputab { char zone_ncpu_min[MAXNAMELEN]; char zone_ncpu_max[MAXNAMELEN]; } zone_vcputab_t; typedef struct zone_storage { char zone_storage_uri[SURI_MAX_URI_LEN]; /* URI string */ struct zone_storage *zone_storage_next; } zone_storage_t; typedef struct zone_rzptab { char zone_rzp_create_size[SURI_MAX_UINT64_LEN]; zone_storage_t *zone_storage_list; } zone_rzptab_t; typedef struct zone_zptab { char zone_zp_create_size[SURI_MAX_UINT64_LEN]; char zone_zp_name[MAXNAMELEN]; /* ZPOOL_MAXNAMELEN */ zone_storage_t *zone_storage_list; char zone_zp_tmp_id[MAX_UINT32_STRLEN]; } zone_zptab_t; typedef struct zone_susptab { char zone_susp_path[MAXPATHLEN]; char zone_susp_suri[SURI_MAX_URI_LEN]; } zone_susptab_t; typedef struct zone_keytab { char zone_key_raw[ZONE_KEY_MAXSTRLEN]; } zone_keytab_t; typedef struct zone_cert { char zone_cert_uri[MAXPATHLEN]; /* URI string */ struct zone_cert *zone_cert_next; } zone_cert_t; typedef struct zone_vboottab { char zone_vboot_policy[MAXPOLICYLEN]; zone_cert_t *zone_cert_list; } zone_vboottab_t; typedef enum zone_iptype { ZS_SHARED, ZS_EXCLUSIVE, ZS_UNKNOWN } zone_iptype_t; typedef struct { char *zmac_list[2]; size_t zmac_size[2]; } zone_maclist_t; typedef enum zone_mactype { ZS_BLACK, ZS_WHITE } zone_mactype_t; typedef struct zone_npivtab { char zone_npiv_pwwn[VPORT_WWN_STR_LEN]; char zone_npiv_overhba[VPORT_MAX_CONTROLLER_LEN]; char zone_npiv_tmp_id[MAX_UINT32_STRLEN]; } zone_npivtab_t; typedef struct zone_vcpubindtab { char zone_bound_ncpu[MAXNAMELEN]; char zone_pset_ncpu[MAXNAMELEN]; char zone_ncpu[MAXNAMELEN]; char zone_is_tmp_pool[MAXNAMELEN]; } zone_vcpubindtab_t; /* * Boot priorities are hardcoded in brpios[] * in $SRC/lib/libzonecfg/common/libzonecfg.c * The longest value is "normal" */ #define MAXBOOTPRIORITYLEN sizeof ("normal") typedef enum bprio { bprio_high = 1, bprio_normal = 2, bprio_low = 3 } bprio_t; typedef enum walk_status { WALK_ERROR = -1, WALK_STOP, WALK_CONTINUE } walk_status_t; typedef int (* net_prop_cmp_fn)(const char *, const char *); typedef struct anet_prop { char *name; size_t offset; size_t size; net_prop_cmp_fn cmp_fn; } anet_prop_t; typedef struct { char *mac_addr_s; char *mac_slot_s; char *mac_prefix_s; char *auto_mac_addr_s; /* Existing. */ vnic_mac_addr_type_t mac_addr_type; uchar_t *mac_addr; uint_t mac_len; uint_t mac_prefix_len; int mac_slot; uchar_t auto_mac_addr[MAXMACADDRLEN]; /* New. */ uchar_t *old_mac_addr; boolean_t allocate_random_address; boolean_t auto_originated; list_t allowed_macaddr_list; } pma_t; typedef walk_status_t (* anet_walk_prop_cb)(anet_prop_t *, zone_anettab_t *, char *, void *); typedef boolean_t (* mntopt_filter_fn)(const char *, const char *); /* For libzonecfg to print messages for caller. */ typedef void (*zonecfg_reporter_f)(void *, boolean_t, const char *); typedef void (*zonecfg_conform_cb_f)(void *, const char *, const char *, const char *, const int); #define WRONG_POS_NUM_MSG gettext("A positive decimal or hexadecimal "\ "number with an optional scale suffix (K, M, G, or T) is required "\ "here.") #define WRONG_NONNEG_NUM_MSG gettext("A non-negative decimal or hexadecimal"\ " number with an optional scale suffix (K, M, G, or T) is required "\ "here.") /* * Basic configuration management routines. */ extern zone_dochandle_t zonecfg_init_handle(void); extern int zonecfg_get_handle(const char *, zone_dochandle_t); extern int zonecfg_get_brand_handle(zone_dochandle_t, brand_handle_t *); extern int zonecfg_get_handle_buf(const char *, const char *, size_t, zone_dochandle_t); extern int zonecfg_get_snapshot_handle(const char *, zone_dochandle_t); extern int zonecfg_get_snapshot_xml(const char *, char **); extern int zonecfg_snapshot_save(const char *, zone_dochandle_t); extern int zonecfg_get_suspend_handle(const char *, zone_dochandle_t); extern int zonecfg_get_template_handle(const char *, const char *, zone_dochandle_t); extern int zonecfg_get_xml_handle(const char *, zone_dochandle_t); extern int zonecfg_get_handle_live(int, const char *, zone_dochandle_t); extern boolean_t zonecfg_handle_needs_commit(zone_dochandle_t); extern void zonecfg_clear_autoboot_upg(zone_dochandle_t); extern int zonecfg_handle_save_fd(zone_dochandle_t, int); extern int zonecfg_check_handle(zone_dochandle_t); extern void zonecfg_fini_handle(zone_dochandle_t); extern int zonecfg_destroy(zone_dochandle_t, const char *, boolean_t); extern int zonecfg_destroy_snapshot(const char *); extern int zonecfg_save(zone_dochandle_t, boolean_t); extern int zonecfg_create_snapshot(const char *); extern char *zonecfg_strerror(int); extern void zonecfg_set_root(const char *); extern void zonecfg_set_altpool(boolean_t); extern int zonecfg_set_indexpath(const char *); extern const char *zonecfg_get_root(void); extern const char *zonecfg_get_indexpath(void); extern int zonecfg_simplify_path(const char *, char *, size_t); extern boolean_t zonecfg_in_alt_root(void); extern int zonecfg_num_resources(zone_dochandle_t, const char *); extern int zonecfg_del_all_resources(zone_dochandle_t, const char *, boolean_t); extern boolean_t zonecfg_valid_importance(char *); extern int zonecfg_str_to_bytes(const char *, uint64_t *); extern boolean_t zonecfg_valid_memlimit(const char *, uint64_t *); extern boolean_t zonecfg_valid_pagesize(const char *, uint64_t *); extern boolean_t zonecfg_valid_alias_limit(char *, char *, uint64_t *); extern void zonecfg_set_digest(zone_dochandle_t, zonecfg_digest_t *); extern zonecfg_digest_t *zonecfg_get_digest(zone_dochandle_t); extern int zonecfg_is_stale(zone_dochandle_t, const char *); extern int zonecfg_set_live_baseline(zone_dochandle_t); extern zonecfg_digest_t *zonecfg_get_live_baseline(zone_dochandle_t); extern int zonecfg_get_current_digest(zone_dochandle_t, zonecfg_digest_t *); extern int zonecfg_create_tmpfile(const char *); extern int zonecfg_handle_set_live(zone_dochandle_t); extern boolean_t zonecfg_handle_is_live(zone_dochandle_t); extern boolean_t zonecfg_cmp_digest(zonecfg_digest_t *, zonecfg_digest_t *); extern boolean_t zonecfg_digest_is_set(zonecfg_digest_t); extern void zonecfg_copy_digest(zonecfg_digest_t *, zonecfg_digest_t *); extern void zonecfg_enable_dep_refresh(zone_dochandle_t); /* * Zone name, path to zone directory, autoboot setting, pool, boot * arguments, and scheduling-class. */ extern int zonecfg_validate_zonename(const char *); extern int zonecfg_get_name(zone_dochandle_t, char *, size_t); extern int zonecfg_set_name(zone_dochandle_t, const char *); extern int zonecfg_get_zonepath_impl(zone_dochandle_t, char *, size_t, boolean_t); extern int zonecfg_get_zonepath(zone_dochandle_t, char *, size_t); extern int zonecfg_set_zonepath(zone_dochandle_t, const char *, boolean_t *); extern int zonecfg_set_default_zonepath(zone_dochandle_t, boolean_t *); extern int zonecfg_is_zonepath_default(zone_dochandle_t, char *, boolean_t *); extern int zonecfg_get_globaltime(zone_dochandle_t, char **, boolean_t *); extern int zonecfg_unset_globaltime(zone_dochandle_t); extern int zonecfg_set_globaltime(zone_dochandle_t, boolean_t); extern int zonecfg_get_hostcompatible(zone_dochandle_t, char *, size_t, zone_host_compat_t *, zone_host_feature_t *); extern int zonecfg_set_hostcompatible(zone_dochandle_t, char *); extern boolean_t zonecfg_verify_hostcompatible(zone_host_compat_t, zone_host_feature_t); extern zone_mig_class_t zonecfg_get_host_mig_class(char *, size_t); extern boolean_t zonecfg_mig_class_can_support(zone_mig_class_t, zone_mig_class_t, char *, size_t); extern const char *zonecfg_mig_class_toname_all(zone_mig_class_t); extern int zonecfg_get_autoboot(zone_dochandle_t, boolean_t *); extern int zonecfg_set_autoboot(zone_dochandle_t, boolean_t); extern int zonecfg_get_autoshutdown(zone_dochandle_t, char *, size_t); extern int zonecfg_set_autoshutdown(zone_dochandle_t, const char *); extern boolean_t zonecfg_is_readonly(zone_dochandle_t); extern int zonecfg_get_mac_profile(zone_dochandle_t, char *, size_t); extern int zonecfg_set_mac_profile(zone_dochandle_t, char *); extern int zonecfg_get_iptype(zone_dochandle_t, zone_iptype_t *); extern int zonecfg_set_iptype(zone_dochandle_t, zone_iptype_t); extern int zonecfg_get_pool(zone_dochandle_t, char *, size_t); extern int zonecfg_set_pool(zone_dochandle_t, char *); extern int zonecfg_get_bootargs(zone_dochandle_t, char *, size_t); extern int zonecfg_set_bootargs(zone_dochandle_t, char *); extern int zonecfg_get_sched_class(zone_dochandle_t, char *, size_t); extern int zonecfg_set_sched(zone_dochandle_t, char *); extern int zonecfg_get_dflt_sched_class(zone_dochandle_t, char *, size_t, boolean_t); extern int zonecfg_get_mig_class(zone_dochandle_t, char *, size_t); extern int zonecfg_set_mig_class(zone_dochandle_t, char *); extern int zonecfg_get_bootdisk_prot(zone_dochandle_t, char *, size_t); extern int zonecfg_set_bootdisk_prot(zone_dochandle_t, char *); extern int zonecfg_get_description(zone_dochandle_t, char *, size_t); extern int zonecfg_set_description(zone_dochandle_t, char *); /* * Set/retrieve the brand for the zone */ extern int zonecfg_get_brand(zone_dochandle_t, char *, size_t); extern int zonecfg_set_brand(zone_dochandle_t, char *); /* * Filesystem configuration. */ extern int zonecfg_add_filesystem(zone_dochandle_t, struct zone_fstab *); extern int zonecfg_delete_filesystem(zone_dochandle_t, struct zone_fstab *); extern int zonecfg_modify_filesystem(zone_dochandle_t, struct zone_fstab *, struct zone_fstab *); extern int zonecfg_lookup_filesystem(zone_dochandle_t, struct zone_fstab *); extern int zonecfg_add_fs_option(struct zone_fstab *, char *); extern int zonecfg_remove_fs_option(struct zone_fstab *, char *); extern void zonecfg_free_fs_option_list(zone_fsopt_t *); extern int zonecfg_find_mounts(char *, int(*)(const struct mnttab *, void *), void *); extern int zonecfg_fs_save_mntopts(const char *, const char *, const char *, zone_fstab_t *); extern int zonecfg_fs_build_mntopts(zone_fsopt_t *, char *, size_t); boolean_t zonecfg_fs_is_child(const char *, const char *); /* * Network interface configuration. */ extern int zonecfg_add_anetmac(struct zone_anetmactab *, struct zone_anettab *); extern int zonecfg_modify_anetmac(zone_dochandle_t, struct zone_anetmactab *, struct zone_anetmactab *, struct zone_anettab *); extern int zonecfg_add_anetvlan(struct zone_anetvlantab *, struct zone_anettab *); extern int zonecfg_modify_anetvlan(zone_dochandle_t, struct zone_anetvlantab *, struct zone_anetvlantab *, struct zone_anettab *); extern int zonecfg_add_net(zone_dochandle_t, struct zone_nettab *); extern int zonecfg_delete_net(zone_dochandle_t, struct zone_nettab *); extern int zonecfg_modify_net(zone_dochandle_t, struct zone_nettab *, struct zone_nettab *); extern int zonecfg_lookup_net(zone_dochandle_t, struct zone_nettab *); /* * Automatic network interface configuration. */ extern int zonecfg_add_anet(zone_dochandle_t, struct zone_anettab *); extern int zonecfg_delete_anet(zone_dochandle_t, struct zone_anettab *); extern int zonecfg_modify_anet(zone_dochandle_t, struct zone_anettab *, struct zone_anettab *); extern int zonecfg_lookup_anet(zone_dochandle_t, struct zone_anettab *); extern boolean_t zonecfg_lookup_linkname(zone_dochandle_t, const char *); extern int zonecfg_anet_get_pmalist(zone_anettab_t *, pma_t **, size_t *); extern void zonecfg_anet_free_pmalist(pma_t *, size_t); extern int zonecfg_anet_walk_props(const char *, zone_anettab_t *, anet_walk_prop_cb, void *); extern int zonecfg_csscmp(const char *, const char *); extern boolean_t zonecfg_anet_is_iov(zone_anettab_t *); extern void zonecfg_anet_get_all_props(const char *, zone_anettab_t *anet, char *buf, size_t buf_sz); extern datalink_id_t zonecfg_get_auto_lowerlink(dladm_handle_t, zone_anettab_t *); /* * Hostid emulation configuration. */ extern int zonecfg_get_hostid(zone_dochandle_t, char *, size_t); extern int zonecfg_set_hostid(zone_dochandle_t, const char *); /* * Allowed FS mounts configuration. */ extern int zonecfg_get_fs_allowed(zone_dochandle_t, char *, size_t); extern int zonecfg_set_fs_allowed(zone_dochandle_t, const char *); /* * EVS tenant configuration. */ extern int zonecfg_get_tenant(zone_dochandle_t, char *, size_t); extern int zonecfg_set_tenant(zone_dochandle_t, const char *); /* * Boot priority configuration. */ extern int zonecfg_get_bootpriority(zone_dochandle_t, char *, size_t); extern int zone_get_bootpriority_num(zone_dochandle_t, bprio_t *); extern int zonecfg_set_bootpriority(zone_dochandle_t, const char *); /* * Device configuration and rule matching. */ extern int zonecfg_add_dev(zone_dochandle_t, struct zone_devtab *); extern int zonecfg_delete_dev(zone_dochandle_t, struct zone_devtab *); extern int zonecfg_modify_dev(zone_dochandle_t, struct zone_devtab *, struct zone_devtab *); extern int zonecfg_lookup_dev(zone_dochandle_t, struct zone_devtab *); extern void zonecfg_dup_dev(const zone_devtab_t *const, zone_devtab_t *const); /* * Resource control configuration. */ extern int zonecfg_add_rctl(zone_dochandle_t, struct zone_rctltab *); extern int zonecfg_delete_rctl(zone_dochandle_t, struct zone_rctltab *); extern int zonecfg_modify_rctl(zone_dochandle_t, struct zone_rctltab *, struct zone_rctltab *); extern int zonecfg_lookup_rctl(zone_dochandle_t, struct zone_rctltab *); extern struct zone_rctlvaltab * zonecfg_create_rctl_value(rctl_priv_t, uint_t, uint64_t); extern int zonecfg_add_rctl_value(struct zone_rctltab *, struct zone_rctlvaltab *); extern int zonecfg_remove_rctl_value(struct zone_rctltab *, struct zone_rctlvaltab *); extern void zonecfg_free_rctl_value_list(struct zone_rctlvaltab *); extern boolean_t zonecfg_aliased_rctl_ok(zone_dochandle_t, char *); extern int zonecfg_set_aliased_rctl(zone_dochandle_t, char *, uint64_t); extern int zonecfg_get_aliased_rctl(zone_dochandle_t, const char *, uint64_t *); extern int zonecfg_rm_aliased_rctl(zone_dochandle_t, char *); extern int zonecfg_apply_rctls(const char *, zone_dochandle_t); /* * Generic attribute configuration and type/value extraction. */ extern int zonecfg_add_attr(zone_dochandle_t, struct zone_attrtab *); extern int zonecfg_delete_attr(zone_dochandle_t, struct zone_attrtab *); extern int zonecfg_modify_attr(zone_dochandle_t, struct zone_attrtab *, struct zone_attrtab *); extern int zonecfg_lookup_attr(zone_dochandle_t, struct zone_attrtab *); extern int zonecfg_get_attr_boolean(const struct zone_attrtab *, boolean_t *); extern int zonecfg_get_attr_int(const struct zone_attrtab *, int64_t *); extern int zonecfg_get_attr_string(const struct zone_attrtab *, char *, size_t); extern int zonecfg_get_attr_uint(const struct zone_attrtab *, uint64_t *); extern int zonecfg_operation_prep(zone_dochandle_t); /* * ZFS configuration. */ extern int zonecfg_add_ds(zone_dochandle_t, struct zone_dstab *); extern int zonecfg_delete_ds(zone_dochandle_t, struct zone_dstab *); extern int zonecfg_modify_ds(zone_dochandle_t, struct zone_dstab *, struct zone_dstab *); extern int zonecfg_lookup_ds(zone_dochandle_t, struct zone_dstab *); /* * cpu-set configuration. */ extern int zonecfg_add_pset(zone_dochandle_t, struct zone_psettab *); extern int zonecfg_delete_pset(zone_dochandle_t); extern int zonecfg_modify_pset(zone_dochandle_t, struct zone_psettab *); extern int zonecfg_lookup_pset(zone_dochandle_t, struct zone_psettab *); extern int zonecfg_pset_get_psettab(pool_conf_t *pconf, pool_t *pool, pool_resource_t *pset, zone_psettab_t *psettab); /* * mem-cap configuration. */ extern int zonecfg_delete_mcap(zone_dochandle_t); extern int zonecfg_modify_mcap(zone_dochandle_t, struct zone_mcaptab *); extern int zonecfg_lookup_mcap(zone_dochandle_t, struct zone_mcaptab *); /* * virtual-cpu configuration. */ extern int zonecfg_delete_virtual_cpu(zone_dochandle_t); extern int zonecfg_modify_virtual_cpu(zone_dochandle_t, struct zone_vcputab *); extern int zonecfg_lookup_virtual_cpu(zone_dochandle_t, struct zone_vcputab *); /* * Temporary pool support functions. */ extern int zonecfg_destroy_tmp_pool(const char *, char *, size_t); extern int zonecfg_bind_tmp_pool(struct zone_psettab *, zoneid_t, char *, size_t); extern int zonecfg_bind_pool(zone_dochandle_t, zoneid_t, char *, size_t); extern boolean_t zonecfg_warn_poold(zone_dochandle_t); extern int zonecfg_get_poolname(zone_dochandle_t, pool_conf_t *, char *, size_t, boolean_t); /* * Zpool configuration */ extern int zonecfg_lookup_rootzpool(zone_dochandle_t, zone_rzptab_t *); extern int zonecfg_delete_rootzpool(zone_dochandle_t, zone_rzptab_t *); extern int zonecfg_add_rootzpool(zone_dochandle_t, zone_rzptab_t *, boolean_t *); extern int zonecfg_modify_rootzpool(zone_dochandle_t, zone_rzptab_t *, zone_rzptab_t *, boolean_t *); extern int zonecfg_add_rootzpool_uri(zone_rzptab_t *, const char *); extern int zonecfg_remove_rootzpool_uri(zone_dochandle_t, zone_rzptab_t *, const char *); extern void zonecfg_free_rootzpool_storage_list(zone_rzptab_t *); extern int zonecfg_lookup_zpool(zone_dochandle_t, zone_zptab_t *); extern int zonecfg_delete_zpool(zone_dochandle_t, zone_zptab_t *); extern int zonecfg_add_zpool(zone_dochandle_t, zone_zptab_t *); extern int zonecfg_modify_zpool(zone_dochandle_t, zone_zptab_t *, zone_zptab_t *); extern int zonecfg_add_zpool_uri(zone_zptab_t *, const char *); extern int zonecfg_remove_zpool_uri(zone_dochandle_t, zone_zptab_t *, const char *); extern void zonecfg_free_zpool_storage_list(zone_zptab_t *); extern int zonecfg_match_storage_uri(zone_dochandle_t, zone_storage_t *, const char *uri); extern int zonecfg_match_storage_list(zone_dochandle_t, zone_storage_t *, const char *, zone_storage_t *); extern int zonecfg_is_zoss(zone_dochandle_t, const char *, boolean_t *, boolean_t *); extern boolean_t zonecfg_valid_zpoolname(const char *); extern int zonecfg_get_zpoolname(const char *, const char *, char *, size_t); extern int zonecfg_get_storage_uris(zone_storage_t *, char **); /* * Suspend configuraton */ extern int zonecfg_lookup_suspend(zone_dochandle_t, zone_susptab_t *); extern int zonecfg_add_suspend(zone_dochandle_t, zone_susptab_t *); extern int zonecfg_delete_suspend(zone_dochandle_t, zone_susptab_t *); extern int zonecfg_modify_suspend(zone_dochandle_t, zone_susptab_t *, zone_susptab_t *); /* * NPIV configuration. */ extern int zonecfg_add_npiv(zone_dochandle_t, zone_npivtab_t *); extern int zonecfg_delete_npiv(zone_dochandle_t, zone_npivtab_t *); extern int zonecfg_modify_npiv(zone_dochandle_t, zone_npivtab_t *, zone_npivtab_t *); extern int zonecfg_lookup_npiv(zone_dochandle_t, zone_npivtab_t *); extern boolean_t zonecfg_is_wwn(const char *); extern boolean_t zonecfg_is_overhba(const char *); /* * Verified-boot configuration */ extern int zonecfg_add_vboot(zone_dochandle_t, zone_vboottab_t *); extern int zonecfg_delete_vboot(zone_dochandle_t); extern int zonecfg_modify_vboot(zone_dochandle_t, zone_vboottab_t *); extern int zonecfg_lookup_vboot(zone_dochandle_t, zone_vboottab_t *); extern int zonecfg_initialize_vboot(zone_vboottab_t *); extern int zonecfg_add_vboot_cert(zone_vboottab_t *, const char *); extern int zonecfg_remove_vboot_cert(zone_vboottab_t *, const char *); extern void zonecfg_free_vboot_cert_list(zone_vboottab_t *); extern int zonecfg_getvbootent(zone_dochandle_t, zone_vboottab_t *, boolean_t); extern int zonecfg_endvbootent(zone_dochandle_t); extern int zonecfg_setvbootent(zone_dochandle_t); extern int zonecfg_get_vboot_certs(zone_vboottab_t *, char **); /* * VCPU auto-adjust support. */ extern int zonecfg_get_current_binding(zoneid_t, zone_vcpubindtab_t *); /* * Miscellaneous utility functions. */ extern int zonecfg_cleanup_config(zone_dochandle_t); /* * attach/detach support. */ extern int zonecfg_get_ua_handle(const char *, const char *, const char *, const char *, char *, size_t, const char *, zone_dochandle_t, boolean_t *, char *, size_t); extern int zonecfg_get_attach_handle(const char *, const char *, const char *, zone_dochandle_t); extern int zonecfg_detach_save(zone_dochandle_t, uint_t); extern void zonecfg_rm_detached(zone_dochandle_t, boolean_t forced); /* * suspend support. */ extern int zonecfg_suspend_save(const char *, zone_dochandle_t); /* * External zone verification support. */ extern int zonecfg_verify_save(zone_dochandle_t, char *); /* * hw_provider emulation configuration. */ extern int zonecfg_get_hw_provider(zone_dochandle_t, char *, size_t); extern int zonecfg_set_hw_provider(zone_dochandle_t, const char *); /* * '*ent' iterator routines. */ extern int zonecfg_setfsent(zone_dochandle_t); extern int zonecfg_getfsent(zone_dochandle_t, struct zone_fstab *, boolean_t); extern int zonecfg_endfsent(zone_dochandle_t); extern int zonecfg_setnetent(zone_dochandle_t); extern int zonecfg_getnetent(zone_dochandle_t, struct zone_nettab *, boolean_t); extern int zonecfg_endnetent(zone_dochandle_t); extern int zonecfg_setanetent(zone_dochandle_t); extern int zonecfg_getanetent(zone_dochandle_t, struct zone_anettab *, boolean_t); extern int zonecfg_endanetent(zone_dochandle_t); extern int zonecfg_setdevent(zone_dochandle_t); extern int zonecfg_getdevent(zone_dochandle_t, struct zone_devtab *, boolean_t); extern int zonecfg_enddevent(zone_dochandle_t); extern int zonecfg_setattrent(zone_dochandle_t); extern int zonecfg_getattrent(zone_dochandle_t, struct zone_attrtab *, boolean_t); extern int zonecfg_endattrent(zone_dochandle_t); extern int zonecfg_setrctlent(zone_dochandle_t); extern int zonecfg_getrctlent(zone_dochandle_t, struct zone_rctltab *); extern int zonecfg_endrctlent(zone_dochandle_t); extern int zonecfg_setdsent(zone_dochandle_t); extern int zonecfg_getdsent(zone_dochandle_t, struct zone_dstab *, boolean_t); extern int zonecfg_enddsent(zone_dochandle_t); extern int zonecfg_getpsetent(zone_dochandle_t, struct zone_psettab *, boolean_t); extern int zonecfg_getmcapent(zone_dochandle_t, struct zone_mcaptab *, boolean_t); extern int zonecfg_setadminent(zone_dochandle_t); extern int zonecfg_getadminent(zone_dochandle_t, struct zone_admintab *, boolean_t); extern int zonecfg_endadminent(zone_dochandle_t); extern int zonecfg_setrzpent(zone_dochandle_t); extern int zonecfg_getrzpent(zone_dochandle_t, zone_rzptab_t *, boolean_t); extern int zonecfg_endrzpent(zone_dochandle_t); extern int zonecfg_setzpent(zone_dochandle_t); extern int zonecfg_getzpent(zone_dochandle_t, zone_zptab_t *, boolean_t); extern int zonecfg_endzpent(zone_dochandle_t); extern int zonecfg_getvcpuent(zone_dochandle_t, struct zone_vcputab *, boolean_t); extern int zonecfg_setsuspent(zone_dochandle_t); extern int zonecfg_getsuspent(zone_dochandle_t, zone_susptab_t *); extern int zonecfg_endsuspent(zone_dochandle_t); extern int zonecfg_setnpivent(zone_dochandle_t); extern int zonecfg_getnpivent(zone_dochandle_t, zone_npivtab_t *, boolean_t); extern int zonecfg_endnpivent(zone_dochandle_t); extern const char *zonecfg_devent_src(zone_devtab_t *); extern const char *zonecfg_anetent_id(zone_anettab_t *); /* * Configuration iterator functions */ typedef int (*iter_resource_cb_t)(void *, void *, void *, const char *); extern int zonecfg_iter_resource(zone_dochandle_t, iter_resource_cb_t, void *, void *, void *); typedef int (*iter_property_cb_t)(void *, void *, void *, const char *, const char *, const char *); extern int zonecfg_iter_property(zone_dochandle_t, iter_property_cb_t, void *, void *, void *); /* * Privilege-related functions. */ extern int zonecfg_default_privset(priv_set_t *, const char *); extern int zonecfg_get_privset(zone_dochandle_t, priv_set_t *, char **); extern int zonecfg_get_limitpriv(zone_dochandle_t, char **); extern int zonecfg_set_limitpriv(zone_dochandle_t, const char *); /* * Higher-level routines. */ extern int zone_get_brand(char *, char *, size_t); extern int zone_get_rootpath(char *, char *, size_t); extern int zone_get_devroot(char *, char *, size_t); extern int zone_get_fmri(const char *, char *, size_t); extern int zone_get_zonepath(char *, char *, size_t); extern int zone_get_zoneds(char *, char *, size_t); extern int zone_get_state(const char *, zone_state_t *); extern int zone_get_zonepath_uuid(const char *, char *, size_t, uuid_t); extern int zone_set_state(const char *, zone_state_t); extern char *zone_state_str(zone_state_t); extern zone_state_t zone_state_num(const char *); extern int zone_create_smf_instance(const char *); extern int zone_destroy_smf_instance(const char *); extern int zone_smf_complete(const char *); extern int zone_smf_uncomplete(const char *); extern int zonecfg_get_name_by_uuid(const uuid_t, char *, size_t); extern int zonecfg_get_uuid(const char *, uuid_t); extern int zonecfg_default_brand(char *, size_t); extern int zonecfg_default_template(char *, size_t); extern int zonecfg_valid_grouping(const char *); /* * Iterator for the index file. */ typedef struct __zindex_handle *zindex_handle_t; extern int setzoneent(zindex_handle_t *); extern char *getzoneent(zindex_handle_t); extern struct zoneent *getzoneent_private(zindex_handle_t); extern void endzoneent(zindex_handle_t); /* * File-system-related convenience functions. */ extern boolean_t zonecfg_valid_fs_type(const char *); /* * Network-related convenience functions. */ extern boolean_t zonecfg_same_net_address(char *, char *); extern int zonecfg_valid_net_address(char *, struct sockaddr_storage *); /* * Rctl-related common functions. */ extern boolean_t zonecfg_is_rctl(const char *); extern boolean_t zonecfg_valid_rctlname(const char *); extern boolean_t zonecfg_valid_rctlblk(const rctlblk_t *); extern boolean_t zonecfg_valid_rctl(const char *, const rctlblk_t *); extern int zonecfg_construct_rctlblk(const struct zone_rctlvaltab *, rctlblk_t *); extern int zonecfg_rctltab2rctlarr(const zone_rctlvaltab_t *, rctlblk_t **, size_t *, size_t *); /* * Live Upgrade support functions. Shared between ON and install gate. */ extern FILE *zonecfg_open_scratch(const char *, boolean_t); extern int zonecfg_lock_scratch(FILE *); extern void zonecfg_close_scratch(FILE *); extern int zonecfg_get_scratch(FILE *, char *, size_t, char *, size_t, char *, size_t); extern int zonecfg_find_scratch(FILE *, const char *, const char *, char *, size_t); extern int zonecfg_reverse_scratch(FILE *, const char *, char *, size_t, char *, size_t); extern int zonecfg_add_scratch(FILE *, const char *, const char *, const char *); extern int zonecfg_delete_scratch(FILE *, const char *); extern boolean_t zonecfg_is_scratch(const char *); extern int zonecfg_add_admin(zone_dochandle_t, struct zone_admintab *, const char *, boolean_t); extern int zonecfg_delete_admin(zone_dochandle_t, struct zone_admintab *, const char *, boolean_t); extern int zonecfg_modify_admin(zone_dochandle_t, struct zone_admintab *, struct zone_admintab *, boolean_t); extern int zonecfg_delete_admins(zone_dochandle_t, char *, boolean_t); extern int zonecfg_lookup_admin(zone_dochandle_t, struct zone_admintab *); extern int zonecfg_fix_admin(zone_dochandle_t, const char *); extern int zonecfg_valid_auths(const char *); extern int zonecfg_get_mac_lists(zone_dochandle_t, zone_maclist_t *); extern boolean_t zonecfg_trusted_path_safe(zone_dochandle_t, const char *); extern int zonecfg_conform_brand(void *, zone_dochandle_t, zonecfg_conform_cb_f); extern int zonecfg_load_brand_defaults(zone_dochandle_t); extern int zonecfg_fix_anet_props(zone_dochandle_t); extern int zonecfg_get_keysource(zone_dochandle_t, zone_keytab_t *); extern int zonecfg_set_keysource(zone_dochandle_t, zone_keytab_t *); extern int zonecfg_init_hostkey(zone_dochandle_t); extern int zone_get_hostkey(const char *, unsigned char **); extern int zone_init_hostkey(const char *, unsigned char **); extern int zonecfg_expand_alltok(zone_dochandle_t, char *, const char *, char **); extern int zonecfg_expandncopy(zone_dochandle_t, char *, char *, size_t); extern int zonecfg_lookup_anetvlan(zone_dochandle_t, list_t *, struct zone_anetvlantab *); extern int zonecfg_lookup_anetmac(zone_dochandle_t, list_t *, struct zone_anetmactab *); extern void zonecfg_empty_reslist(list_t *); extern void zonecfg_empty_vlanlist(list_t *); extern void zonecfg_destroy_anet_vlanlist(struct zone_anettab *); extern void zonecfg_initialize_anetvlan(list_t *); extern int zonecfg_copy_vlanlist(list_t *, list_t *); extern void zonecfg_empty_maclist(list_t *); extern void zonecfg_destroy_anet_maclist(struct zone_anettab *); extern void zonecfg_initialize_anetmac(list_t *); extern int zonecfg_copy_maclist(list_t *, list_t *); extern int zonecfg_copy_ib_portlist(list_t *, list_t *); extern int zonecfg_delete_anetvlan(zone_dochandle_t, struct zone_anetvlantab *, struct zone_anettab *); extern int zonecfg_delete_anetmac(zone_dochandle_t, struct zone_anetmactab *, struct zone_anettab *); extern int zonecfg_rebuild_mac_ids(list_t *, int *, long **); extern int zonecfg_rebuild_rt_ids(zone_dochandle_t, const unsigned char *, int *, long **); extern int zonecfg_rebuild_net_ids(zone_dochandle_t, int *, long **); extern void zonecfg_assign_dev_id(long *, size_t, int, char *, size_t); extern int zonecfg_get_default(zone_dochandle_t, const char *, const char *, int, char *, size_t); extern int zonecfg_check_tokens(const char *, uint64_t, int *); extern boolean_t zonecfg_matchprop(zone_dochandle_t, char *, char *, char *); extern boolean_t zonecfg_matchprop_casecmp(zone_dochandle_t, char *, char *, char *); extern boolean_t zonecfg_matchprop_csscmp(zone_dochandle_t, char *, char *, char *); extern boolean_t zonecfg_str_to_uint64(const char *, uint64_t *); extern void zonecfg_initialize_ibport(list_t *); extern void zonecfg_destroy_ib_portlist(struct zone_ibtab *); extern int zonecfg_setibent(zone_dochandle_t); extern int zonecfg_getibent(zone_dochandle_t, struct zone_ibtab *, boolean_t); extern int zonecfg_endibent(zone_dochandle_t); extern int zonecfg_lookup_ibport(zone_dochandle_t, list_t *, struct zone_ibporttab *); extern int zonecfg_lookup_ib(zone_dochandle_t, struct zone_ibtab *); extern int zonecfg_rebuild_ib_port_ids(list_t *, int *, long **); extern int zonecfg_add_ib(zone_dochandle_t, struct zone_ibtab *); extern int zonecfg_modify_ib(zone_dochandle_t, struct zone_ibtab *, struct zone_ibtab *); extern int zonecfg_delete_ib(zone_dochandle_t, struct zone_ibtab *); extern int zonecfg_add_ibport(struct zone_ibporttab *, struct zone_ibtab *); extern int zonecfg_delete_ibport(zone_dochandle_t, struct zone_ibporttab *, struct zone_ibtab *); extern int zonecfg_modify_ibport(zone_dochandle_t, struct zone_ibporttab *, struct zone_ibporttab *, struct zone_ibtab *); extern int zonecfg_verify_ib(struct zone_ibtab *, ibadm_handle_t *, ibadm_conf_t *, char *, char *, int); extern int zonecfg_setup_vhca(ibadm_handle_t *, ibadm_conf_t *, char *, char *, int); extern int zonecfg_verify_ibpkey(ibadm_handle_t *, ibadm_conf_t *, char *, char *, uint_t, char *, int); extern zone_mig_class_t zonecfg_mig_class_fromname(const char *); extern const char *zonecfg_mig_class_toname(zone_mig_class_t); extern zone_host_compat_t zonecfg_compat_level_fromname(const char *); extern const char *zonecfg_compat_level_toname(zone_host_compat_t); extern const char *zonecfg_compat_modifier_toname(zone_host_feature_t); extern boolean_t zonecfg_mig_class_modifier_supported(zone_mig_class_t, zone_host_feature_t); extern zone_host_feature_t zonecfg_host_compat_tofeatures(zone_mig_class_t, zone_host_compat_t); extern int zonecfg_dup_priv_check(zone_dochandle_t, const char *, char **, boolean_t *, boolean_t *); extern zone_pgsz_policy_t zonecfg_pgsz_policy_fromname(const char *); extern const char *zonecfg_pgsz_policy_toname(zone_pgsz_policy_t); extern int zonecfg_memlzr_arg_fromname(const char *); extern int zonecfg_match_allowed_vids(list_t *, const char *); extern int zonecfg_add_allowed_vids(list_t *, const char *); extern int zonecfg_remove_allowed_vids(list_t *, const char *); extern void zonecfg_destroy_allowed_vids(list_t *); extern int zonecfg_match_allowed_macaddr_and_get_cnt(list_t *, const char *, int *); extern int zonecfg_match_allowed_macaddr(list_t *, const char *); extern int zonecfg_add_allowed_macaddr(list_t *, const char *); extern int zonecfg_remove_allowed_macaddr(list_t *, const char *); extern void zonecfg_destroy_allowed_macaddr(list_t *); extern void zonecfg_initialize_allowed_macaddr(list_t *); extern void zonecfg_initialize_allowed_vids(list_t *); extern int zonecfg_copy_allowed_macaddrlist(list_t *, list_t *); extern int zonecfg_copy_allowed_vidslist(list_t *, list_t *); extern int zonecfg_setdepent(zone_dochandle_t); extern int zonecfg_getdepent(zone_dochandle_t, struct zone_deptab *); extern int zonecfg_enddepent(zone_dochandle_t); extern int zonecfg_lookup_dep(zone_dochandle_t, struct zone_deptab *); extern int zonecfg_add_dep(zone_dochandle_t, struct zone_deptab *); extern int zonecfg_modify_dep(zone_dochandle_t, struct zone_deptab *, struct zone_deptab *); extern int zonecfg_delete_dep(zone_dochandle_t, struct zone_deptab *); extern boolean_t zonecfg_has_obsolete_prop(zone_dochandle_t, zonecfg_reporter_f, void *); extern int zonecfg_convert_obsolete_prop(zone_dochandle_t, zonecfg_reporter_f, void *); extern struct zoneent *zonecfg_getzoneent(const char *); extern int zonecfg_putzoneent(struct zoneent *, zoneent_op_t); boolean_t zonecfg_zone_in_index(const char *); extern int zonecfg_config_exists(const char *, boolean_t); extern int zonecfg_autocmpl_anet_linkname(zone_dochandle_t, void *); extern int zonecfg_get_next_linkname(zone_dochandle_t, char *, size_t, boolean_t); extern boolean_t zonecfg_gz_invalid_property(boolean_t, int); extern boolean_t zonecfg_gz_invalid_resource(boolean_t, int); extern boolean_t zonecfg_gz_invalid_rt_property(boolean_t, int); extern int zonecfg_get_state_from_index(const char *, zone_state_t *); extern boolean_t zonecfg_known_fs_type(const char *); extern int zonecfg_pset2bitset(zone_dochandle_t, struct zone_psettab *, bitset_t *); extern void zonecfg_audit_err(int, int *, int *, int *); extern char *zonecfg_get_auths(char *, const char *); extern int zonecfg_add_vcpubinding(zone_dochandle_t, struct zone_vcpubindtab *); extern int zonecfg_lookup_vcpubinding(zone_dochandle_t, struct zone_vcpubindtab *); extern int zonecfg_delete_vcpubinding(zone_dochandle_t); #ifdef __cplusplus } #endif #endif /* _LIBZONECFG_H */