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  * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
  26  */
  27 
  28 #ifndef _SYSTOKEN_H
  29 #define _SYSTOKEN_H
  30 
  31 #ifdef __cplusplus
  32 extern "C" {
  33 #endif
  34 
  35 #include "sysplugin.h"
  36 #include <bsm/adt.h>
  37 
  38 /*
  39  * parse_context -- doc and cur are for XML input, chunk and
  40  * remaining for "plain text input, i.e., the traditiona
  41  * output from praudit
  42  */
  43 
  44 struct parse_context {
  45         adr_t           adr;    /* input buffer pointers */
  46         uint64_t        id;     /* message sequence number */
  47         tosyslog_t      out;    /* output data */
  48 };
  49 typedef struct parse_context parse_context_t;
  50 
  51 #define AU_TEXT_NAME    " text "
  52 
  53 #ifdef useless
  54 /*
  55  * the following *_ar_token() functions parallel the *_token()(
  56  * functions defined in praudit/toktable.h
  57  */
  58 
  59 /*
  60  * These tokens are the same for all versions of Solaris
  61  */
  62 
  63 /*
  64  * Control tokens
  65  */
  66 
  67 extern void     file_token(adr_t *, uint64_t, uint64_t);
  68 extern void     trailer_token(adr_t *, parse_context_t *);
  69 extern void     header_token(adr_t *, parse_context_t *);
  70 extern void     header32_ex_token(adr_t *, parse_context_t *);
  71 
  72 /*
  73  * Data tokens
  74  */
  75 
  76 extern void     arbitrary_data_token(adr_t *, parse_context_t *);
  77 extern void     fmri_token(adr_t *, parse_context_t *);
  78 extern void     s5_IPC_token(adr_t *, parse_context_t *);
  79 extern void     path_token(adr_t *, parse_context_t *);
  80 extern void     subject32_token();
  81 extern void     process32_token();
  82 extern void     return_value32_token();
  83 extern void     text_token(adr_t *, parse_context_t *);
  84 extern void     opaque_token(adr_t *, parse_context_t *);
  85 extern void     ip_addr_token();
  86 extern void     ip_token(adr_t *, parse_context_t *);
  87 extern void     iport_token(adr_t *, parse_context_t *);
  88 extern void     argument32_token();
  89 extern void     socket_token();
  90 extern void     sequence_token(adr_t *, parse_context_t *);
  91 
  92 /*
  93  * Modifier tokens
  94  */
  95 
  96 extern void     acl_token(adr_t *, parse_context_t *);
  97 extern void     attribute_token(adr_t *, parse_context_t *);
  98 extern void     s5_IPC_perm_token(adr_t *, parse_context_t *);
  99 extern void     group_token();
 100 extern void     label_token(adr_t *, parse_context_t *);
 101 extern void     privilege_token(adr_t *, parse_context_t *);
 102 extern void     useofpriv_token(adr_t *, parse_context_t *);
 103 extern void     secflags_token(adr_t *, parse_context_t *);
 104 extern void     zonename_token(adr_t *, parse_context_t *);
 105 extern void     liaison_token(adr_t *, parse_context_t *);
 106 extern void     newgroup_token(adr_t *, parse_context_t *);
 107 extern void     exec_args_token(adr_t *, parse_context_t *);
 108 extern void     exec_env_token(adr_t *, parse_context_t *);
 109 extern void     attribute32_token(adr_t *, parse_context_t *);
 110 extern void     useofauth_token(adr_t *, parse_context_t *);
 111 extern void     user_token(adr_t *, parse_context_t *);
 112 
 113 /*
 114  * X windows tokens
 115  */
 116 
 117 extern void     xatom_token(adr_t *, parse_context_t *);
 118 extern void     xselect_token(adr_t *, parse_context_t *);
 119 extern void     xcolormap_token(adr_t *, parse_context_t *);
 120 extern void     xcursor_token(adr_t *, parse_context_t *);
 121 extern void     xfont_token(adr_t *, parse_context_t *);
 122 extern void     xgc_token(adr_t *, parse_context_t *);
 123 extern void     xpixmap_token(adr_t *, parse_context_t *);
 124 extern void     xproperty_token(adr_t *, parse_context_t *);
 125 extern void     xwindow_token(adr_t *, parse_context_t *);
 126 extern void     xclient_token(adr_t *, parse_context_t *);
 127 
 128 /*
 129  * Command tokens
 130  */
 131 
 132 extern void     cmd_token(adr_t *, parse_context_t *);
 133 extern void     exit_token(adr_t *, parse_context_t *);
 134 
 135 /*
 136  * Miscellaneous tokens
 137  */
 138 
 139 extern void     host_token(adr_t *, parse_context_t *);
 140 
 141 /*
 142  * Solaris64 tokens
 143  */
 144 
 145 extern void     argument64_token(adr_t *, parse_context_t *);
 146 extern void     return64_token(adr_t *, parse_context_t *);
 147 extern void     attribute64_token(adr_t *, parse_context_t *);
 148 extern void     header64_token(adr_t *, parse_context_t *);
 149 extern void     subject64_token(adr_t *, parse_context_t *);
 150 extern void     process64_token(adr_t *, parse_context_t *);
 151 extern void     file64_token(adr_t *, parse_context_t *);
 152 
 153 /*
 154  * Extended network address tokens
 155  */
 156 
 157 extern void     header64_ex_token();
 158 extern void     subject32_ex_token();
 159 extern void     process32_ex_token();
 160 extern void     subject64_ex_token(adr_t *, parse_context_t *);
 161 extern void     process64_ex_token(adr_t *, parse_context_t *);
 162 extern void     ip_addr_ex_token(adr_t *, parse_context_t *);
 163 extern void     socket_ex_token(adr_t *, parse_context_t *);
 164 extern void     tid_token(adr_t *, parse_context_t *);
 165 extern void     access_mask_token(parse_context_t *)
 166 extern void     wsid_token(parse_context_t *)
 167 #endif
 168 
 169 #ifdef __cplusplus
 170 }
 171 #endif
 172 
 173 #endif  /* _SYSTOKEN_H */