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.save.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 <netinet/in_systm.h>
   32 #include <netinet/in.h>
   33 #include <netinet/ip.h>
   34 
   35 /* We could determined the header and trailer sizes by
   36  * defining appropriate structures. We hold off that approach
   37  * till we have a consistant way of using structures for all tokens.
   38  * This is not straightforward since these token structures may
   39  * contain pointers of whose contents we dont know the size
   40  * (e.g text tokens)
   41  */
   42 #define HEADER_SIZE     18
   43 #define TRAILER_SIZE    7
   44         
   45 #define ADD_U_CHAR(loc, val) \
   46         do {\
   47                 *loc = val;\
   48                 loc += sizeof(u_char);\
   49         }while(0)
   50     
   51 
   52 #define ADD_U_INT16(loc, val) \
   53         do { \
   54                 memcpy(loc, (u_char *)&val, sizeof(u_int16_t));\
   55                 loc += sizeof(u_int16_t); \
   56         }while(0)
   57 
   58 #define ADD_U_INT32(loc, val) \
   59         do { \
   60                 memcpy(loc, (u_char *)&val, sizeof(u_int32_t));\
   61                 loc += sizeof(u_int32_t); \
   62         }while(0)
   63 
   64 #define ADD_U_INT64(loc, val)\
   65         do {\
   66                 memcpy(loc, (u_char *)&val, sizeof(u_int64_t));\
   67                 loc += sizeof(u_int64_t); \
   68         }while(0)
   69 
   70 #define ADD_MEM(loc, data, size) \
   71         do { \
   72                 memcpy(loc, data, size);\
   73                 loc += size;\
   74         }while(0)
   75 
   76 #define ADD_STRING(loc, data, size) ADD_MEM(loc, data, size)
   77 
   78 
   79 /* Various token id types */
   80 
   81 /* 
   82  * Values inside the comments are not documented in the BSM pages and
   83  * have been picked up from the header files 
   84  */  
   85 
   86 /*
   87  * Values marked as XXX do not have a value defined in the BSM header files 
   88  */   
   89 
   90 /*
   91  * Control token types
   92 
   93 #define AUT_OTHER_FILE              ((char)0x11)
   94 #define AUT_OTHER_FILE32            AUT_OTHER_FILE
   95 #define AUT_OHEADER                 ((char)0x12)
   96 
   97  */
   98 
   99 #define AUT_INVALID                 0x00
  100 #define AU_FILE_TOKEN               0x11
  101 #define AU_TRAILER_TOKEN            0x13 
  102 #define AU_HEADER_32_TOKEN          0x14        
  103 #define AU_HEADER_EX_32_TOKEN       0x15
  104 
  105 
  106 /*
  107  * Data token types
  108 #define AUT_SERVER              ((char)0x25)
  109 #define AUT_SERVER32            AUT_SERVER
  110  */
  111 
  112 #define AU_DATA_TOKEN               0x21
  113 #define AU_ARB_TOKEN                AU_DATA_TOKEN       
  114 #define AU_IPC_TOKEN                0x22
  115 #define AU_PATH_TOKEN               0x23
  116 #define AU_SUBJECT_32_TOKEN         0x24
  117 #define AU_PROCESS_32_TOKEN         0x26
  118 #define AU_RETURN_32_TOKEN          0x27
  119 #define AU_TEXT_TOKEN               0x28
  120 #define AU_OPAQUE_TOKEN             0x29
  121 #define AU_IN_ADDR_TOKEN            0x2A
  122 #define AU_IP_TOKEN                 0x2B
  123 #define AU_IPORT_TOKEN              0x2C
  124 #define AU_ARG32_TOKEN              0x2D        
  125 #define AU_SOCK_TOKEN               0x2E
  126 #define AU_SEQ_TOKEN                0x2F
  127 
  128 /*
  129  * Modifier token types
  130 
  131 #define AUT_ACL                 ((char)0x30)
  132 #define AUT_LABEL               ((char)0x33)
  133 #define AUT_GROUPS              ((char)0x34)
  134 #define AUT_ILABEL              ((char)0x35)
  135 #define AUT_SLABEL              ((char)0x36)
  136 #define AUT_CLEAR               ((char)0x37)
  137 #define AUT_PRIV                ((char)0x38)
  138 #define AUT_UPRIV               ((char)0x39)
  139 #define AUT_LIAISON             ((char)0x3A)
  140  
  141  */
  142 
  143 #define AU_ATTR_TOKEN               0x31
  144 #define AU_IPCPERM_TOKEN            0x32
  145 #define AU_NEWGROUPS_TOKEN          0x3B
  146 #define AU_EXEC_ARG_TOKEN           0x3C
  147 #define AU_EXEC_ENV_TOKEN           0x3D
  148 #define AU_ATTR32_TOKEN             0x3E
  149 
  150 
  151 /*
  152  * Command token types
  153  */
  154  
  155 #define AU_CMD_TOKEN                0x51
  156 #define AU_EXIT_TOKEN               0x52
  157 
  158 
  159 
  160 /*
  161  * Miscellaneous token types
  162 
  163 #define AUT_HOST                ((char)0x70)
  164 
  165  */
  166 
  167 /*
  168  * 64bit token types
  169 
  170 #define AUT_SERVER64            ((char)0x76)
  171 #define AUT_OTHER_FILE64                ((char)0x78)
  172 
  173  */
  174 
  175 #define AU_ARG64_TOKEN              0x71
  176 #define AU_RETURN_64_TOKEN          0x72
  177 #define AU_ATTR64_TOKEN             0x73
  178 #define AU_HEADER_64_TOKEN          0x74
  179 #define AU_SUBJECT_64_TOKEN         0x75
  180 #define AU_PROCESS_64_TOKEN         0x77
  181 
  182 
  183  
  184 /*
  185  * Extended network address token types
  186  */
  187  
  188 #define AU_HEADER_EX_64_TOKEN       0x79
  189 #define AU_SUBJECT_32_EX_TOKEN      0x7a        
  190 #define AU_PROCESS_32_EX_TOKEN      0x7b
  191 #define AU_SUBJECT_64_EX_TOKEN      0x7c
  192 #define AU_PROCESS_64_EX_TOKEN      0x7d
  193 #define AU_IN_ADDR_EX_TOKEN             0x7e
  194 #define AU_SOCK_EX32_TOKEN          0x7f
  195 #define AU_SOCK_EX128_TOKEN         AUT_INVALID         /*XXX*/
  196 #define AU_IP_EX_TOKEN              AUT_INVALID         /*XXX*/
  197 
  198 
  199 /*
  200  * The values for the following token ids is not
  201  * defined by BSM
  202  */
  203 #define AU_SOCK_INET_32_TOKEN       0x80         /*XXX*/ 
  204 #define AU_SOCK_INET_128_TOKEN      0x81         /*XXX*/
  205 
  206 /* print values for the arbitrary token */
  207 #define AUP_BINARY      0
  208 #define AUP_OCTAL       1
  209 #define AUP_DECIMAL     2
  210 #define AUP_HEX         3
  211 #define AUP_STRING      4
  212 
  213 
  214 /* data-types for the arbitrary token */
  215 #define AUR_BYTE        0
  216 #define AUR_SHORT       1
  217 #define AUR_LONG        2
  218 
  219 /* ... and their sizes */
  220 #define AUR_BYTE_SIZE       sizeof(u_char)      
  221 #define AUR_SHORT_SIZE      sizeof(u_int16_t)
  222 #define AUR_LONG_SIZE       sizeof(u_int32_t)
  223 
  224 /* Modifiers for the header token */
  225 #define PAD_NOTATTR  0x4000   /* nonattributable event */
  226 #define PAD_FAILURE  0x8000   /* fail audit event */
  227 
  228 
  229 #define MAX_GROUPS          16
  230 #define HEADER_VERSION      1
  231 #define TRAILER_PAD_MAGIC   0xB105
  232 
  233 /* BSM system calls */
  234 
  235 #ifdef KERNEL
  236 #else
  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 #endif /* !KERNEL */  
  249                                
  250 token_t                 *au_to_arg(char n, char *text, u_int32_t v);
  251 token_t                 *au_to_arg32(char n, char *text, u_int32_t v);
  252 token_t                 *au_to_arg64(char n, char *text, u_int64_t v);
  253 token_t                 *au_to_attr(struct vattr *attr);
  254 token_t                 *au_to_attr32(struct vattr *attr);
  255 token_t                 *au_to_attr64(struct vattr *attr);
  256 token_t                 *au_to_data(char unit_print, char unit_type,
  257                                 char unit_count, char *p);
  258 token_t                 *au_to_exit(int retval, int err);
  259 token_t                 *au_to_groups(int *groups);
  260 token_t                 *au_to_newgroups(u_int16_t n, gid_t *groups);
  261 token_t                 *au_to_in_addr(struct in_addr *internet_addr);
  262 token_t                 *au_to_in_addr_ex(struct in6_addr *internet_addr);
  263 token_t                 *au_to_ip(struct ip *ip);
  264 token_t                 *au_to_ipc(char type, int id);
  265 token_t                 *au_to_ipc_perm(struct ipc_perm *perm);
  266 token_t                 *au_to_iport(u_int16_t iport);
  267 token_t                 *au_to_opaque(char *data, u_int16_t bytes);
  268 token_t                 *au_to_path(char *path);
  269 token_t                 *au_to_process(au_id_t auid, uid_t euid, gid_t egid,
  270                                 uid_t ruid, gid_t rgid, pid_t pid,
  271                                 au_asid_t sid, au_tid_t *tid);
  272 token_t                 *au_to_process32(au_id_t auid, uid_t euid, gid_t egid,
  273                                 uid_t ruid, gid_t rgid, pid_t pid,
  274                                 au_asid_t sid, au_tid_t *tid);
  275 token_t                 *au_to_process64(au_id_t auid, uid_t euid, gid_t egid,
  276                                 uid_t ruid, gid_t rgid, pid_t pid,
  277                                 au_asid_t sid, au_tid_t *tid);
  278 token_t                 *au_to_process_ex(au_id_t auid, uid_t euid,
  279                                 gid_t egid, uid_t ruid, gid_t rgid, pid_t pid,
  280                                 au_asid_t sid, au_tid_addr_t *tid);
  281 token_t                 *au_to_process32_ex(au_id_t auid, uid_t euid,
  282                                 gid_t egid, uid_t ruid, gid_t rgid, pid_t pid,
  283                                 au_asid_t sid, au_tid_addr_t *tid);
  284 token_t                 *au_to_process64_ex(au_id_t auid, uid_t euid,
  285                                 gid_t egid, uid_t ruid, gid_t rgid, pid_t pid,
  286                                 au_asid_t sid, au_tid_addr_t *tid);
  287 token_t                 *au_to_return(char status, u_int32_t ret);
  288 token_t                 *au_to_return32(char status, u_int32_t ret);
  289 token_t                 *au_to_return64(char status, u_int64_t ret);
  290 token_t                 *au_to_seq(long audit_count);
  291 token_t                 *au_to_socket(struct socket *so);
  292 token_t                 *au_to_socket_ex_32(struct socket *so);
  293 token_t                 *au_to_socket_ex_128(struct socket *so);
  294 token_t                 *au_to_sock_inet(struct sockaddr_in *so);
  295 token_t                 *au_to_sock_inet32(struct sockaddr_in *so);
  296 token_t                 *au_to_sock_inet128(struct sockaddr_in6 *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: c434f5e04c7891df4aa078c22d062411


[ 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.