The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/bsd/sys/bsm_token.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 2003 Apple Computer, Inc. All rights reserved.
    3  *
    4  * @APPLE_LICENSE_HEADER_START@
    5  * 
    6  * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
    7  * 
    8  * This file contains Original Code and/or Modifications of Original Code
    9  * as defined in and that are subject to the Apple Public Source License
   10  * Version 2.0 (the 'License'). You may not use this file except in
   11  * compliance with the License. Please obtain a copy of the License at
   12  * http://www.opensource.apple.com/apsl/ and read it before using this
   13  * file.
   14  * 
   15  * The Original Code and all software distributed under the License are
   16  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
   17  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
   18  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
   19  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
   20  * Please see the License for the specific language governing rights and
   21  * limitations under the License.
   22  * 
   23  * @APPLE_LICENSE_HEADER_END@
   24  */
   25 
   26 #ifndef _BSM_TOKEN_H_
   27 #define _BSM_TOKEN_H_
   28 
   29 #include <sys/vnode.h>
   30 #include <sys/ipc.h>
   31 #include <sys/un.h>
   32 #include <netinet/in_systm.h>
   33 #include <netinet/in.h>
   34 #include <netinet/ip.h>
   35 
   36 /* We could determined the header and trailer sizes by
   37  * defining appropriate structures. We hold off that approach
   38  * till we have a consistant way of using structures for all tokens.
   39  * This is not straightforward since these token structures may
   40  * contain pointers of whose contents we dont know the size
   41  * (e.g text tokens)
   42  */
   43 #define HEADER_SIZE     18
   44 #define TRAILER_SIZE    7
   45         
   46 #define ADD_U_CHAR(loc, val) \
   47         do {\
   48                 *loc = val;\
   49                 loc += sizeof(u_char);\
   50         }while(0)
   51     
   52 
   53 #define ADD_U_INT16(loc, val) \
   54         do { \
   55                 memcpy(loc, (u_char *)&val, sizeof(u_int16_t));\
   56                 loc += sizeof(u_int16_t); \
   57         }while(0)
   58 
   59 #define ADD_U_INT32(loc, val) \
   60         do { \
   61                 memcpy(loc, (u_char *)&val, sizeof(u_int32_t));\
   62                 loc += sizeof(u_int32_t); \
   63         }while(0)
   64 
   65 #define ADD_U_INT64(loc, val)\
   66         do {\
   67                 memcpy(loc, (u_char *)&val, sizeof(u_int64_t));\
   68                 loc += sizeof(u_int64_t); \
   69         }while(0)
   70 
   71 #define ADD_MEM(loc, data, size) \
   72         do { \
   73                 memcpy(loc, data, size);\
   74                 loc += size;\
   75         }while(0)
   76 
   77 #define ADD_STRING(loc, data, size) ADD_MEM(loc, data, size)
   78 
   79 
   80 /* Various token id types */
   81 
   82 /* 
   83  * Values inside the comments are not documented in the BSM pages and
   84  * have been picked up from the header files 
   85  */  
   86 
   87 /*
   88  * Values marked as XXX do not have a value defined in the BSM header files 
   89  */   
   90 
   91 /*
   92  * Control token types
   93 
   94 #define AUT_OTHER_FILE              ((char)0x11)
   95 #define AUT_OTHER_FILE32            AUT_OTHER_FILE
   96 #define AUT_OHEADER                 ((char)0x12)
   97 
   98  */
   99 
  100 #define AUT_INVALID                 0x00
  101 #define AU_FILE_TOKEN               0x11
  102 #define AU_TRAILER_TOKEN            0x13 
  103 #define AU_HEADER_32_TOKEN          0x14        
  104 #define AU_HEADER_EX_32_TOKEN       0x15
  105 
  106 
  107 /*
  108  * Data token types
  109 #define AUT_SERVER              ((char)0x25)
  110 #define AUT_SERVER32            AUT_SERVER
  111  */
  112 
  113 #define AU_DATA_TOKEN               0x21
  114 #define AU_ARB_TOKEN                AU_DATA_TOKEN       
  115 #define AU_IPC_TOKEN                0x22
  116 #define AU_PATH_TOKEN               0x23
  117 #define AU_SUBJECT_32_TOKEN         0x24
  118 #define AU_PROCESS_32_TOKEN         0x26
  119 #define AU_RETURN_32_TOKEN          0x27
  120 #define AU_TEXT_TOKEN               0x28
  121 #define AU_OPAQUE_TOKEN             0x29
  122 #define AU_IN_ADDR_TOKEN            0x2A
  123 #define AU_IP_TOKEN                 0x2B
  124 #define AU_IPORT_TOKEN              0x2C
  125 #define AU_ARG32_TOKEN              0x2D        
  126 #define AU_SOCK_TOKEN               0x2E
  127 #define AU_SEQ_TOKEN                0x2F
  128 
  129 /*
  130  * Modifier token types
  131 
  132 #define AUT_ACL                 ((char)0x30)
  133 #define AUT_LABEL               ((char)0x33)
  134 #define AUT_GROUPS              ((char)0x34)
  135 #define AUT_ILABEL              ((char)0x35)
  136 #define AUT_SLABEL              ((char)0x36)
  137 #define AUT_CLEAR               ((char)0x37)
  138 #define AUT_PRIV                ((char)0x38)
  139 #define AUT_UPRIV               ((char)0x39)
  140 #define AUT_LIAISON             ((char)0x3A)
  141  
  142  */
  143 
  144 #define AU_ATTR_TOKEN               0x31
  145 #define AU_IPCPERM_TOKEN            0x32
  146 #define AU_NEWGROUPS_TOKEN          0x3B
  147 #define AU_EXEC_ARG_TOKEN           0x3C
  148 #define AU_EXEC_ENV_TOKEN           0x3D
  149 #define AU_ATTR32_TOKEN             0x3E
  150 
  151 
  152 /*
  153  * Command token types
  154  */
  155  
  156 #define AU_CMD_TOKEN                0x51
  157 #define AU_EXIT_TOKEN               0x52
  158 
  159 
  160 
  161 /*
  162  * Miscellaneous token types
  163 
  164 #define AUT_HOST                ((char)0x70)
  165 
  166  */
  167 
  168 /*
  169  * 64bit token types
  170 
  171 #define AUT_SERVER64            ((char)0x76)
  172 #define AUT_OTHER_FILE64                ((char)0x78)
  173 
  174  */
  175 
  176 #define AU_ARG64_TOKEN              0x71
  177 #define AU_RETURN_64_TOKEN          0x72
  178 #define AU_ATTR64_TOKEN             0x73
  179 #define AU_HEADER_64_TOKEN          0x74
  180 #define AU_SUBJECT_64_TOKEN         0x75
  181 #define AU_PROCESS_64_TOKEN         0x77
  182 
  183 
  184  
  185 /*
  186  * Extended network address token types
  187  */
  188  
  189 #define AU_HEADER_EX_64_TOKEN       0x79
  190 #define AU_SUBJECT_32_EX_TOKEN      0x7a        
  191 #define AU_PROCESS_32_EX_TOKEN      0x7b
  192 #define AU_SUBJECT_64_EX_TOKEN      0x7c
  193 #define AU_PROCESS_64_EX_TOKEN      0x7d
  194 #define AU_IN_ADDR_EX_TOKEN             0x7e
  195 #define AU_SOCK_EX32_TOKEN          0x7f
  196 #define AU_SOCK_EX128_TOKEN         AUT_INVALID         /*XXX*/
  197 #define AU_IP_EX_TOKEN              AUT_INVALID         /*XXX*/
  198 
  199 
  200 /*
  201  * The values for the following token ids is not
  202  * defined by BSM
  203  */
  204 #define AU_SOCK_INET_32_TOKEN       0x80         /*XXX*/ 
  205 #define AU_SOCK_INET_128_TOKEN      0x81         /*XXX*/
  206 #define AU_SOCK_UNIX_TOKEN          0x82         /*XXX*/
  207 
  208 /* print values for the arbitrary token */
  209 #define AUP_BINARY      0
  210 #define AUP_OCTAL       1
  211 #define AUP_DECIMAL     2
  212 #define AUP_HEX         3
  213 #define AUP_STRING      4
  214 
  215 
  216 /* data-types for the arbitrary token */
  217 #define AUR_BYTE        0
  218 #define AUR_SHORT       1
  219 #define AUR_LONG        2
  220 
  221 /* ... and their sizes */
  222 #define AUR_BYTE_SIZE       sizeof(u_char)      
  223 #define AUR_SHORT_SIZE      sizeof(u_int16_t)
  224 #define AUR_LONG_SIZE       sizeof(u_int32_t)
  225 
  226 /* Modifiers for the header token */
  227 #define PAD_NOTATTR  0x4000   /* nonattributable event */
  228 #define PAD_FAILURE  0x8000   /* fail audit event */
  229 
  230 
  231 #define MAX_GROUPS          16
  232 #define HEADER_VERSION      1
  233 #define TRAILER_PAD_MAGIC   0xB105
  234 
  235 /* BSM library calls */
  236 
  237 int                     au_open(void);
  238 int                     au_write(int d, token_t *m);
  239 int                     au_close(int d, int keep, short event);
  240 token_t                 *au_to_file(char *file);
  241 token_t                 *au_to_header(int rec_size, au_event_t e_type, 
  242                                         au_emod_t e_mod);
  243 token_t                 *au_to_header32(int rec_size, au_event_t e_type, 
  244                                         au_emod_t e_mod);
  245 token_t                 *au_to_header64(int rec_size, au_event_t e_type, 
  246                                         au_emod_t e_mod);
  247 token_t                 *au_to_me(void);
  248                                
  249 token_t                 *au_to_arg(char n, char *text, u_int32_t v);
  250 token_t                 *au_to_arg32(char n, char *text, u_int32_t v);
  251 token_t                 *au_to_arg64(char n, char *text, u_int64_t v);
  252 token_t                 *au_to_attr(struct vattr *attr);
  253 token_t                 *au_to_attr32(struct vattr *attr);
  254 token_t                 *au_to_attr64(struct vattr *attr);
  255 token_t                 *au_to_data(char unit_print, char unit_type,
  256                                 char unit_count, char *p);
  257 token_t                 *au_to_exit(int retval, int err);
  258 token_t                 *au_to_groups(int *groups);
  259 token_t                 *au_to_newgroups(u_int16_t n, gid_t *groups);
  260 token_t                 *au_to_in_addr(struct in_addr *internet_addr);
  261 token_t                 *au_to_in_addr_ex(struct in6_addr *internet_addr);
  262 token_t                 *au_to_ip(struct ip *ip);
  263 token_t                 *au_to_ipc(char type, int id);
  264 token_t                 *au_to_ipc_perm(struct ipc_perm *perm);
  265 token_t                 *au_to_iport(u_int16_t iport);
  266 token_t                 *au_to_opaque(char *data, u_int16_t bytes);
  267 token_t                 *au_to_path(char *path);
  268 token_t                 *au_to_process(au_id_t auid, uid_t euid, gid_t egid,
  269                                 uid_t ruid, gid_t rgid, pid_t pid,
  270                                 au_asid_t sid, au_tid_t *tid);
  271 token_t                 *au_to_process32(au_id_t auid, uid_t euid, gid_t egid,
  272                                 uid_t ruid, gid_t rgid, pid_t pid,
  273                                 au_asid_t sid, au_tid_t *tid);
  274 token_t                 *au_to_process64(au_id_t auid, uid_t euid, gid_t egid,
  275                                 uid_t ruid, gid_t rgid, pid_t pid,
  276                                 au_asid_t sid, au_tid_t *tid);
  277 token_t                 *au_to_process_ex(au_id_t auid, uid_t euid,
  278                                 gid_t egid, uid_t ruid, gid_t rgid, pid_t pid,
  279                                 au_asid_t sid, au_tid_addr_t *tid);
  280 token_t                 *au_to_process32_ex(au_id_t auid, uid_t euid,
  281                                 gid_t egid, uid_t ruid, gid_t rgid, pid_t pid,
  282                                 au_asid_t sid, au_tid_addr_t *tid);
  283 token_t                 *au_to_process64_ex(au_id_t auid, uid_t euid,
  284                                 gid_t egid, uid_t ruid, gid_t rgid, pid_t pid,
  285                                 au_asid_t sid, au_tid_addr_t *tid);
  286 token_t                 *au_to_return(char status, u_int32_t ret);
  287 token_t                 *au_to_return32(char status, u_int32_t ret);
  288 token_t                 *au_to_return64(char status, u_int64_t ret);
  289 token_t                 *au_to_seq(long audit_count);
  290 token_t                 *au_to_socket(struct socket *so);
  291 token_t                 *au_to_socket_ex_32(struct socket *so);
  292 token_t                 *au_to_socket_ex_128(struct socket *so);
  293 token_t                 *au_to_sock_inet(struct sockaddr_in *so);
  294 token_t                 *au_to_sock_inet32(struct sockaddr_in *so);
  295 token_t                 *au_to_sock_inet128(struct sockaddr_in6 *so);
  296 token_t                 *au_to_sock_unix(struct sockaddr_un *so);
  297 token_t                 *au_to_subject(au_id_t auid, uid_t euid, gid_t egid,
  298                                 uid_t ruid, gid_t rgid, pid_t pid,
  299                                 au_asid_t sid, au_tid_t *tid);
  300 token_t                 *au_to_subject32(au_id_t auid, uid_t euid, gid_t egid,
  301                                 uid_t ruid, gid_t rgid, pid_t pid,
  302                                 au_asid_t sid, au_tid_t *tid);
  303 token_t                 *au_to_subject64(au_id_t auid, uid_t euid, gid_t egid,
  304                                 uid_t ruid, gid_t rgid, pid_t pid,
  305                                 au_asid_t sid, au_tid_t *tid);
  306 token_t                 *au_to_subject_ex(au_id_t auid, uid_t euid,
  307                                 gid_t egid, uid_t ruid, gid_t rgid, pid_t pid,
  308                                 au_asid_t sid, au_tid_addr_t *tid);
  309 token_t                 *au_to_subject32_ex(au_id_t auid, uid_t euid,
  310                                 gid_t egid, uid_t ruid, gid_t rgid, pid_t pid,
  311                                 au_asid_t sid, au_tid_addr_t *tid);
  312 token_t                 *au_to_subject64_ex(au_id_t auid, uid_t euid,
  313                                 gid_t egid, uid_t ruid, gid_t rgid, pid_t pid,
  314                                 au_asid_t sid, au_tid_addr_t *tid);
  315 token_t                 *au_to_exec_args(const char **);
  316 token_t                 *au_to_exec_env(const char **);
  317 token_t                 *au_to_text(char *text);
  318 token_t                 *au_to_trailer(int rec_size);
  319 
  320 #endif /* ! _BSM_TOKEN_H_ */

Cache object: 92707cedfecd569049f6062e05ae74b1


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.