Print this page
    
    
      
        | Split | 
	Close | 
      
      | Expand all | 
      | Collapse all | 
    
    
          --- old/usr/src/cmd/zoneadmd/zoneadmd.h
          +++ new/usr/src/cmd/zoneadmd/zoneadmd.h
   1    1  /*
   2    2   * CDDL HEADER START
   3    3   *
   4    4   * The contents of this file are subject to the terms of the
   5    5   * Common Development and Distribution License (the "License").
   6    6   * You may not use this file except in compliance with the License.
   7    7   *
   8    8   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9    9   * or http://www.opensolaris.org/os/licensing.
  10   10   * See the License for the specific language governing permissions
  11   11   * and limitations under the License.
  12   12   *
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  24   24   * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
  25   25   * Copyright 2016 Joyent, Inc.
  26   26   */
  27   27  
  28   28  #ifndef _ZONEADMD_H
  29   29  #define _ZONEADMD_H
  30   30  
  31   31  #ifdef  __cplusplus
  32   32  extern "C" {
  33   33  #endif
  34   34  
  35   35  #include <libdladm.h>
  36   36  
  37   37  /*
  38   38   * Multi-threaded programs should avoid MT-unsafe library calls (i.e., any-
  39   39   * thing which could try to acquire a user-level lock unprotected by an atfork
  40   40   * handler) between fork(2) and exec(2).  See the pthread_atfork(3THR) man
  41   41   * page for details.  In particular, we want to avoid calls to zerror() in
  42   42   * such situations, as it calls setlocale(3c) which is susceptible to such
  43   43   * problems.  So instead we have the child use one of the special exit codes
  44   44   * below when needed, and the parent look out for such possibilities and call
  45   45   * zerror() there.
  46   46   *
  47   47   * Since 0, 1 and 2 are generally used for success, general error, and usage,
  48   48   * we start with 3.
  49   49   */
  50   50  #define ZEXIT_FORK              3
  51   51  #define ZEXIT_EXEC              4
  52   52  #define ZEXIT_ZONE_ENTER        5
  53   53  
  54   54  #define DEVFSADM        "devfsadm"
  55   55  #define DEVFSADM_PATH   "/usr/sbin/devfsadm"
  56   56  
  57   57  #define EXEC_PREFIX     "exec "
  58   58  #define EXEC_LEN        (strlen(EXEC_PREFIX))
  59   59  
  60   60  #define CLUSTER_BRAND_NAME      "cluster"
  61   61  #define LABELED_BRAND_NAME      "labeled"
  62   62  
  
    | 
      ↓ open down ↓ | 
    62 lines elided | 
    
      ↑ open up ↑ | 
  
  63   63  #define SHUTDOWN_WAIT           60
  64   64  #define SHUTDOWN_DEFAULT        "/sbin/init 0"
  65   65  #define SHUTDOWN_FMRI   "svc:/system/zones:default"
  66   66  
  67   67  /* 0755 is the default directory mode. */
  68   68  #define DEFAULT_DIR_MODE \
  69   69          (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)
  70   70  #define DEFAULT_DIR_USER -1     /* user ID for chown: -1 means don't change */
  71   71  #define DEFAULT_DIR_GROUP -1    /* grp ID for chown: -1 means don't change */
  72   72  
  73      -#define ALT_MOUNT(mount_cmd)    ((mount_cmd) != Z_MNT_BOOT)
       73 +#define ALT_MOUNT(mount_cmd)    ((mount_cmd) != Z_MNT_BOOT)
  74   74  
  75   75  typedef struct zlog {
  76   76          FILE *logfile;  /* file to log to */
  77   77  
  78   78          /*
  79   79           * The following are used if logging to a buffer.
  80   80           */
  81   81          char *log;      /* remaining log */
  82   82          size_t loglen;  /* size of remaining log */
  83   83          char *buf;      /* underlying storage */
  84   84          size_t buflen;  /* total len of 'buf' */
  85   85          char *locale;   /* locale to use for gettext() */
  86   86  } zlog_t;
  87   87  
  88   88  extern zlog_t logsys;
  89   89  
  90   90  extern mutex_t lock;
  91   91  extern mutex_t msglock;
  92   92  extern boolean_t in_death_throes;
  93   93  extern boolean_t bringup_failure_recovery;
  94   94  extern char *zone_name;
  95   95  extern char zonepath[MAXNAMELEN];
  96   96  extern zone_dochandle_t snap_hndl;
  
    | 
      ↓ open down ↓ | 
    13 lines elided | 
    
      ↑ open up ↑ | 
  
  97   97  extern char pool_name[MAXNAMELEN];
  98   98  extern char brand_name[MAXNAMELEN];
  99   99  extern char default_brand[MAXNAMELEN];
 100  100  extern char boot_args[BOOTARGS_MAX];
 101  101  extern boolean_t zone_isnative;
 102  102  extern boolean_t zone_iscluster;
 103  103  extern dladm_handle_t dld_handle;
 104  104  
 105  105  extern void zerror(zlog_t *, boolean_t, const char *, ...);
 106  106  extern char *localize_msg(char *locale, const char *msg);
 107      -extern void nwifent_free_attrs(struct zone_nwiftab *);
 108  107  
 109  108  /*
 110  109   * Eventstream interfaces.
 111  110   */
 112  111  typedef enum {
 113  112          Z_EVT_NULL = 0,
 114  113          Z_EVT_ZONE_BOOTING,
 115  114          Z_EVT_ZONE_REBOOTING,
 116  115          Z_EVT_ZONE_HALTED,
 117  116          Z_EVT_ZONE_READIED,
 118  117          Z_EVT_ZONE_UNINSTALLING,
 119  118          Z_EVT_ZONE_BOOTFAILED
 120  119  } zone_evt_t;
 121  120  
 122  121  extern int eventstream_init();
 123  122  extern void eventstream_write(zone_evt_t evt);
 124  123  
 125  124  /*
 126  125   * Zone mount styles.  Boot is the standard mount we do when booting the zone,
 127  126   * scratch is the standard scratch zone mount for upgrade and update is a
 128  127   * variation on the scratch zone where we don't lofs mount the zone's /etc
 129  128   * and /var back into the scratch zone so that we can then do an
 130  129   * 'update on attach' within the scratch zone.
  
    | 
      ↓ open down ↓ | 
    13 lines elided | 
    
      ↑ open up ↑ | 
  
 131  130   */
 132  131  typedef enum {
 133  132          Z_MNT_BOOT = 0,
 134  133          Z_MNT_SCRATCH,
 135  134          Z_MNT_UPDATE
 136  135  } zone_mnt_t;
 137  136  
 138  137  /*
 139  138   * Virtual platform interfaces.
 140  139   */
 141      -extern zoneid_t vplat_create(zlog_t *, zone_mnt_t, zoneid_t);
      140 +extern zoneid_t vplat_create(zlog_t *, zone_mnt_t);
 142  141  extern int vplat_bringup(zlog_t *, zone_mnt_t, zoneid_t);
 143      -extern int vplat_teardown(zlog_t *, boolean_t, boolean_t, boolean_t);
      142 +extern int vplat_teardown(zlog_t *, boolean_t, boolean_t);
 144  143  extern int vplat_get_iptype(zlog_t *, zone_iptype_t *);
 145  144  
 146  145  /*
 147  146   * Filesystem mounting interfaces.
 148  147   */
 149  148  extern int valid_mount_path(zlog_t *, const char *, const char *,
 150  149      const char *, const char *);
 151  150  extern int make_one_dir(zlog_t *, const char *, const char *,
 152  151      mode_t, uid_t, gid_t);
 153  152  extern void resolve_lofs(zlog_t *zlogp, char *path, size_t pathlen);
 154  153  
 155  154  /*
 156  155   * Console subsystem routines.
 157  156   */
 158  157  extern int init_console(zlog_t *);
 159  158  extern void serve_console(zlog_t *);
 160  159  extern void zcons_statechanged();
 161  160  
 162  161  /*
 163  162   * Memory capping thread creation.
 164  163   */
 165  164  extern void create_mcap_thread(zlog_t *, zoneid_t);
 166  165  extern void destroy_mcap_thread();
 167  166  
 168  167  /*
 169  168   * Zone FD log thread creation.
 170  169   */
 171  170  extern void create_log_thread(zlog_t *, zoneid_t);
  
    | 
      ↓ open down ↓ | 
    18 lines elided | 
    
      ↑ open up ↑ | 
  
 172  171  extern void destroy_log_thread();
 173  172  
 174  173  /*
 175  174   * Contract handling.
 176  175   */
 177  176  extern int init_template(void);
 178  177  
 179  178  /*
 180  179   * Routine to manage child processes.
 181  180   */
 182      -extern int do_subproc(zlog_t *, char *, char **, boolean_t);
      181 +extern int do_subproc(zlog_t *, char *, char **);
 183  182  
 184  183  #ifdef __cplusplus
 185  184  }
 186  185  #endif
 187  186  
 188  187  #endif /* _ZONEADMD_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX