Print this page
    
OS-192 zone_create() warning on headnode
    
      
        | 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.
  
    | 
      ↓ open down ↓ | 
    14 lines elided | 
    
      ↑ open up ↑ | 
  
  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 + * Copyright (c) 2011, Joyent Inc. All rights reserved.
  25   26   */
  26   27  
  27   28  #ifndef _ZONEADMD_H
  28   29  #define _ZONEADMD_H
  29   30  
  30   31  #ifdef  __cplusplus
  31   32  extern "C" {
  32   33  #endif
  33   34  
  34   35  #include <libdladm.h>
  35   36  
  36   37  /*
  37   38   * Multi-threaded programs should avoid MT-unsafe library calls (i.e., any-
  38   39   * thing which could try to acquire a user-level lock unprotected by an atfork
  39   40   * handler) between fork(2) and exec(2).  See the pthread_atfork(3THR) man
  40   41   * page for details.  In particular, we want to avoid calls to zerror() in
  41   42   * such situations, as it calls setlocale(3c) which is susceptible to such
  42   43   * problems.  So instead we have the child use one of the special exit codes
  43   44   * below when needed, and the parent look out for such possibilities and call
  44   45   * zerror() there.
  45   46   *
  46   47   * Since 0, 1 and 2 are generally used for success, general error, and usage,
  47   48   * we start with 3.
  48   49   */
  49   50  #define ZEXIT_FORK              3
  50   51  #define ZEXIT_EXEC              4
  51   52  #define ZEXIT_ZONE_ENTER        5
  52   53  
  53   54  #define DEVFSADM        "devfsadm"
  54   55  #define DEVFSADM_PATH   "/usr/sbin/devfsadm"
  55   56  
  56   57  #define EXEC_PREFIX     "exec "
  57   58  #define EXEC_LEN        (strlen(EXEC_PREFIX))
  58   59  
  59   60  #define CLUSTER_BRAND_NAME      "cluster"
  60   61  #define LABELED_BRAND_NAME      "labeled"
  61   62  
  62   63  #define SHUTDOWN_WAIT           60
  63   64  #define SHUTDOWN_DEFAULT        "/sbin/init 0"
  64   65  #define SHUTDOWN_FMRI   "svc:/system/zones:default"
  65   66  
  66   67  /* 0755 is the default directory mode. */
  67   68  #define DEFAULT_DIR_MODE \
  68   69          (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)
  69   70  #define DEFAULT_DIR_USER -1     /* user ID for chown: -1 means don't change */
  70   71  #define DEFAULT_DIR_GROUP -1    /* grp ID for chown: -1 means don't change */
  71   72  
  72   73  
  73   74  typedef struct zlog {
  74   75          FILE *logfile;  /* file to log to */
  75   76  
  76   77          /*
  77   78           * The following are used if logging to a buffer.
  78   79           */
  79   80          char *log;      /* remaining log */
  80   81          size_t loglen;  /* size of remaining log */
  81   82          char *buf;      /* underlying storage */
  82   83          size_t buflen;  /* total len of 'buf' */
  83   84          char *locale;   /* locale to use for gettext() */
  84   85  } zlog_t;
  85   86  
  86   87  extern zlog_t logsys;
  87   88  
  88   89  extern mutex_t lock;
  89   90  extern mutex_t msglock;
  90   91  extern boolean_t in_death_throes;
  91   92  extern boolean_t bringup_failure_recovery;
  92   93  extern char *zone_name;
  93   94  extern char pool_name[MAXNAMELEN];
  94   95  extern char brand_name[MAXNAMELEN];
  95   96  extern char default_brand[MAXNAMELEN];
  96   97  extern char boot_args[BOOTARGS_MAX];
  97   98  extern char bad_boot_arg[BOOTARGS_MAX];
  98   99  extern boolean_t zone_isnative;
  99  100  extern boolean_t zone_iscluster;
 100  101  extern dladm_handle_t dld_handle;
 101  102  
 102  103  extern void zerror(zlog_t *, boolean_t, const char *, ...);
 103  104  extern char *localize_msg(char *locale, const char *msg);
 104  105  
 105  106  /*
 106  107   * Eventstream interfaces.
 107  108   */
 108  109  typedef enum {
 109  110          Z_EVT_NULL = 0,
 110  111          Z_EVT_ZONE_BOOTING,
 111  112          Z_EVT_ZONE_REBOOTING,
 112  113          Z_EVT_ZONE_HALTED,
 113  114          Z_EVT_ZONE_READIED,
 114  115          Z_EVT_ZONE_UNINSTALLING,
 115  116          Z_EVT_ZONE_BOOTFAILED,
 116  117          Z_EVT_ZONE_BADARGS
 117  118  } zone_evt_t;
 118  119  
 119  120  extern int eventstream_init();
 120  121  extern void eventstream_write(zone_evt_t evt);
 121  122  
 122  123  /*
 123  124   * Zone mount styles.  Boot is the standard mount we do when booting the zone,
 124  125   * scratch is the standard scratch zone mount for upgrade and update is a
 125  126   * variation on the scratch zone where we don't lofs mount the zone's /etc
 126  127   * and /var back into the scratch zone so that we can then do an
 127  128   * 'update on attach' within the scratch zone.
  
    | 
      ↓ open down ↓ | 
    93 lines elided | 
    
      ↑ open up ↑ | 
  
 128  129   */
 129  130  typedef enum {
 130  131          Z_MNT_BOOT = 0,
 131  132          Z_MNT_SCRATCH,
 132  133          Z_MNT_UPDATE
 133  134  } zone_mnt_t;
 134  135  
 135  136  /*
 136  137   * Virtual platform interfaces.
 137  138   */
 138      -extern zoneid_t vplat_create(zlog_t *, zone_mnt_t);
      139 +extern zoneid_t vplat_create(zlog_t *, zone_mnt_t, zoneid_t);
 139  140  extern int vplat_bringup(zlog_t *, zone_mnt_t, zoneid_t);
 140  141  extern int vplat_teardown(zlog_t *, boolean_t, boolean_t);
 141  142  extern int vplat_get_iptype(zlog_t *, zone_iptype_t *);
 142  143  
 143  144  /*
 144  145   * Filesystem mounting interfaces.
 145  146   */
 146  147  extern int valid_mount_path(zlog_t *, const char *, const char *,
 147  148      const char *, const char *);
 148  149  extern int make_one_dir(zlog_t *, const char *, const char *,
 149  150      mode_t, uid_t, gid_t);
 150  151  extern void resolve_lofs(zlog_t *zlogp, char *path, size_t pathlen);
 151  152  
 152  153  /*
 153  154   * Console subsystem routines.
 154  155   */
 155  156  extern int init_console(zlog_t *);
 156  157  extern void serve_console(zlog_t *);
 157  158  
 158  159  /*
 159  160   * Contract handling.
 160  161   */
 161  162  extern int init_template(void);
 162  163  
 163  164  /*
 164  165   * Routine to manage child processes.
 165  166   */
 166  167  extern int do_subproc(zlog_t *, char *, char **);
 167  168  
 168  169  #ifdef __cplusplus
 169  170  }
 170  171  #endif
 171  172  
 172  173  #endif /* _ZONEADMD_H */
  
    | 
      ↓ open down ↓ | 
    24 lines elided | 
    
      ↑ open up ↑ | 
  
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX