1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  23  * Use is subject to license terms.
  24  */
  25 
  26 #ifndef _TOKTABLE_H
  27 #define _TOKTABLE_H
  28 
  29 #ifdef __cplusplus
  30 extern "C" {
  31 #endif
  32 
  33 /*
  34  * Solaris Audit Token Table.
  35  */
  36 
  37 typedef struct token_desc {
  38         char    *t_name;        /* name of the token */
  39         char    *t_tagname;     /* tag name */
  40         int     (*func)();      /* token processing function */
  41         short   t_type;         /* token or tag type */
  42 } token_desc_t;
  43 
  44 
  45 #define NOFUNC          (int (*)())0
  46 
  47 #define MAXTOKEN        0xff
  48 
  49 extern token_desc_t tokentable[];
  50 
  51 /*
  52  * Tag types -
  53  *
  54  *      attribute:      an attribute:
  55  *                      xxx="..."
  56  *
  57  *      element:        a simple element:
  58  *                      <xxx> ... </xxx>
  59  *
  60  *      enclosed:       a self contained element, optionally with attributes:
  61  *                      <xxx a="" b="" ... />
  62  *
  63  *      extended:       an element with attributes:
  64  *                      <xxx a="" b="" ...> ... </xxx>
  65  */
  66 #define T_ATTRIBUTE     1       /* attribute */
  67 #define T_ELEMENT       2       /* element */
  68 #define T_ENCLOSED      3       /* enclosed element */
  69 #define T_EXTENDED      4       /* extended element */
  70 #define T_UNKNOWN       99      /* huh... */
  71 
  72 /*
  73  * Define the kinds of tags
  74  */
  75 enum tagnum_t { TAG_INVALID = MAXTOKEN,
  76         TAG_UID,
  77         TAG_GID,
  78         TAG_RUID,
  79         TAG_RGID,
  80         TAG_AUID,
  81         TAG_PID,
  82         TAG_SID,
  83         TAG_TID32,
  84         TAG_TID64,
  85         TAG_TID32_EX,
  86         TAG_TID64_EX,
  87         TAG_EVMOD,
  88         TAG_TOKVERS,
  89         TAG_EVTYPE,
  90         TAG_ISO,
  91         TAG_ERRVAL,
  92         TAG_RETVAL,
  93         TAG_SETTYPE,
  94         TAG_GROUPID,
  95         TAG_XID,
  96         TAG_XCUID,
  97         TAG_XSELTEXT,
  98         TAG_XSELTYPE,
  99         TAG_XSELDATA,
 100         TAG_ARGNUM,
 101         TAG_ARGVAL32,
 102         TAG_ARGVAL64,
 103         TAG_ARGDESC,
 104         TAG_MODE,
 105         TAG_FSID,
 106         TAG_NODEID32,
 107         TAG_NODEID64,
 108         TAG_DEVICE32,
 109         TAG_DEVICE64,
 110         TAG_SEQNUM,                     /* with sequence token */
 111         TAG_ARGV,                       /* with cmd token */
 112         TAG_ARGE,                       /* with cmd token */
 113         TAG_ARG,                        /* with exec_args token */
 114         TAG_ENV,                        /* with exec_env token */
 115         TAG_XAT,                        /* with attr_path token */
 116         TAG_RESULT,                     /* with use_of_privilege token */
 117         TAG_CUID,                       /* with IPC_perm token */
 118         TAG_CGID,                       /* with IPC_perm token */
 119         TAG_SEQ,                        /* with IPC_perm token */
 120         TAG_KEY,                        /* with IPC_perm token */
 121         TAG_IPVERS,                     /* with ip token */
 122         TAG_IPSERV,                     /* with ip token */
 123         TAG_IPLEN,                      /* with ip token */
 124         TAG_IPID,                       /* with ip token */
 125         TAG_IPOFFS,                     /* with ip token */
 126         TAG_IPTTL,                      /* with ip token */
 127         TAG_IPPROTO,                    /* with ip token */
 128         TAG_IPCKSUM,                    /* with ip token */
 129         TAG_IPSRC,                      /* with ip token */
 130         TAG_IPDEST,                     /* with ip token */
 131         TAG_ACLTYPE,                    /* with acl token */
 132         TAG_ACLVAL,                     /* with acl token */
 133         TAG_SOCKTYPE,                   /* with socket token */
 134         TAG_SOCKPORT,                   /* with socket token */
 135         TAG_SOCKADDR,                   /* with socket token */
 136         TAG_SOCKEXDOM,                  /* with socket_ex token */
 137         TAG_SOCKEXTYPE,                 /* with socket_ex token */
 138         TAG_SOCKEXLPORT,                /* with socket_ex token */
 139         TAG_SOCKEXLADDR,                /* with socket_ex token */
 140         TAG_SOCKEXFPORT,                /* with socket_ex token */
 141         TAG_SOCKEXFADDR,                /* with socket_ex token */
 142         TAG_IPCTYPE,                    /* with IPC token */
 143         TAG_IPCID,                      /* with IPC token */
 144         TAG_ARBPRINT,                   /* with arbitrary (data) token */
 145         TAG_ARBTYPE,                    /* with arbitrary (data) token */
 146         TAG_ARBCOUNT,                   /* with arbitrary (data) token */
 147         TAG_HOSTID,                     /* with extended header token */
 148         TAG_ZONENAME,                   /* with zonename token */
 149         TAG_TID_TYPE,                   /* with tid token */
 150         TAG_IP,                         /* with tid token, type=ip */
 151         TAG_IP_LOCAL,                   /* with tid token, type=ip */
 152         TAG_IP_REMOTE,                  /* with tid token, type=ip */
 153         TAG_IP_ADR,                     /* with tid token, type=ip */
 154         TAG_ACEMASK,                    /* with ace token */
 155         TAG_ACEFLAGS,                   /* with ace token */
 156         TAG_ACETYPE,                    /* with ace token */
 157         TAG_ACEID,                      /* with ace token */
 158         TAG_USERNAME,                   /* with user token */
 159         MAXTAG
 160 };
 161 
 162 
 163 /*
 164  * These tokens are the same for all versions of Solaris
 165  */
 166 
 167 /*
 168  * Control tokens
 169  */
 170 
 171 extern int      file_token();
 172 extern int      trailer_token();
 173 extern int      header_token();
 174 extern int      header32_ex_token();
 175 
 176 /*
 177  * Data tokens
 178  */
 179 
 180 extern int      arbitrary_data_token();
 181 extern int      fmri_token();
 182 extern int      s5_IPC_token();
 183 extern int      path_token();
 184 extern int      path_attr_token();
 185 extern int      subject32_token();
 186 extern int      process32_token();
 187 extern int      return_value32_token();
 188 extern int      text_token();
 189 extern int      opaque_token();
 190 extern int      ip_addr_token();
 191 extern int      ip_token();
 192 extern int      iport_token();
 193 extern int      argument32_token();
 194 extern int      socket_token();
 195 extern int      sequence_token();
 196 
 197 /*
 198  * Modifier tokens
 199  */
 200 
 201 extern int      acl_token();
 202 extern int      ace_token();
 203 extern int      attribute_token();
 204 extern int      s5_IPC_perm_token();
 205 extern int      group_token();
 206 extern int      label_token();
 207 extern int      privilege_token();
 208 extern int      useofpriv_token();
 209 extern int      liaison_token();
 210 extern int      newgroup_token();
 211 extern int      exec_args_token();
 212 extern int      exec_env_token();
 213 extern int      attribute32_token();
 214 extern int      useofauth_token();
 215 extern int      user_token();
 216 extern int      zonename_token();
 217 
 218 /*
 219  * X windows tokens
 220  */
 221 
 222 extern int      xatom_token();
 223 extern int      xselect_token();
 224 extern int      xcolormap_token();
 225 extern int      xcursor_token();
 226 extern int      xfont_token();
 227 extern int      xgc_token();
 228 extern int      xpixmap_token();
 229 extern int      xproperty_token();
 230 extern int      xwindow_token();
 231 extern int      xclient_token();
 232 
 233 /*
 234  * Command tokens
 235  */
 236 
 237 extern int      cmd_token();
 238 extern int      exit_token();
 239 
 240 /*
 241  * Miscellaneous tokens
 242  */
 243 
 244 extern int      host_token();
 245 
 246 /*
 247  * Solaris64 tokens
 248  */
 249 
 250 extern int      argument64_token();
 251 extern int      return_value64_token();
 252 extern int      attribute64_token();
 253 extern int      header64_token();
 254 extern int      subject64_token();
 255 extern int      process64_token();
 256 extern int      file64_token();
 257 
 258 /*
 259  * Extended network address tokens
 260  */
 261 
 262 extern int      header64_ex_token();
 263 extern int      subject32_ex_token();
 264 extern int      process32_ex_token();
 265 extern int      subject64_ex_token();
 266 extern int      process64_ex_token();
 267 extern int      ip_addr_ex_token();
 268 extern int      socket_ex_token();
 269 extern int      tid_token();
 270 
 271 #ifdef __cplusplus
 272 }
 273 #endif
 274 
 275 #endif  /* _TOKTABLE_H */