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/bsm/audit.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) 2005 Apple Computer, Inc.
    3  * All rights reserved.
    4  *
    5  * @APPLE_BSD_LICENSE_HEADER_START@
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  *
   11  * 1.  Redistributions of source code must retain the above copyright
   12  *     notice, this list of conditions and the following disclaimer.
   13  * 2.  Redistributions in binary form must reproduce the above copyright
   14  *     notice, this list of conditions and the following disclaimer in the
   15  *     documentation and/or other materials provided with the distribution.
   16  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
   17  *     its contributors may be used to endorse or promote products derived
   18  *     from this software without specific prior written permission.
   19  *
   20  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
   21  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
   22  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   23  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
   24  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   25  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   26  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   27  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   29  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   30  *
   31  * @APPLE_BSD_LICENSE_HEADER_END@
   32  *
   33  * $P4: //depot/projects/trustedbsd/audit3/sys/bsm/audit.h#34 $
   34  * $FreeBSD: releng/6.2/sys/bsm/audit.h 162821 2006-09-29 22:43:30Z rwatson $
   35  */
   36 
   37 #ifndef _BSM_AUDIT_H
   38 #define _BSM_AUDIT_H
   39 
   40 #include <sys/param.h>
   41 #include <sys/cdefs.h>
   42 #include <sys/queue.h>
   43 
   44 #define AUDIT_RECORD_MAGIC      0x828a0f1b
   45 #define MAX_AUDIT_RECORDS       20
   46 #define MAXAUDITDATA            (0x8000 - 1)
   47 #define MAX_AUDIT_RECORD_SIZE   MAXAUDITDATA
   48 #define MIN_AUDIT_FILE_SIZE     (512 * 1024)
   49 
   50 /*
   51  * Minimum noumber of free blocks on the filesystem containing the audit
   52  * log necessary to avoid a hard log rotation. DO NOT SET THIS VALUE TO 0
   53  * as the kernel does an unsigned compare, plus we want to leave a few blocks
   54  * free so userspace can terminate the log, etc.
   55  */
   56 #define AUDIT_HARD_LIMIT_FREE_BLOCKS    4
   57 
   58 /*
   59  * Triggers for the audit daemon.
   60  */
   61 #define AUDIT_TRIGGER_MIN               1
   62 #define AUDIT_TRIGGER_LOW_SPACE         1       /* Below low watermark. */
   63 #define AUDIT_TRIGGER_ROTATE_KERNEL     2       /* Kernel requests rotate. */
   64 #define AUDIT_TRIGGER_READ_FILE         3       /* Re-read config file. */
   65 #define AUDIT_TRIGGER_CLOSE_AND_DIE     4       /* Terminate audit. */
   66 #define AUDIT_TRIGGER_NO_SPACE          5       /* Below min free space. */
   67 #define AUDIT_TRIGGER_ROTATE_USER       6       /* User requests roate. */
   68 #define AUDIT_TRIGGER_MAX               6
   69 
   70 /*
   71  * The special device filename (FreeBSD).
   72  */
   73 #define AUDITDEV_FILENAME       "audit"
   74 #define AUDIT_TRIGGER_FILE      ("/dev/" AUDITDEV_FILENAME)
   75 
   76 /*
   77  * Pre-defined audit IDs
   78  */
   79 #define AU_DEFAUDITID   -1
   80 
   81 /*
   82  * Define the masks for the classes of audit events.
   83  */
   84 #define AU_NULL         0x00000000
   85 #define AU_FREAD        0x00000001
   86 #define AU_FWRITE       0x00000002
   87 #define AU_FACCESS      0x00000004
   88 #define AU_FMODIFY      0x00000008
   89 #define AU_FCREATE      0x00000010
   90 #define AU_FDELETE      0x00000020
   91 #define AU_CLOSE        0x00000040
   92 #define AU_PROCESS      0x00000080
   93 #define AU_NET          0x00000100
   94 #define AU_IPC          0x00000200
   95 #define AU_NONAT        0x00000400
   96 #define AU_ADMIN        0x00000800
   97 #define AU_LOGIN        0x00001000
   98 #define AU_TFM          0x00002000
   99 #define AU_APPL         0x00004000
  100 #define AU_SETL         0x00008000
  101 #define AU_IFLOAT       0x00010000
  102 #define AU_PRIV         0x00020000
  103 #define AU_MAC_RW       0x00040000
  104 #define AU_XCONN        0x00080000
  105 #define AU_XCREATE      0x00100000
  106 #define AU_XDELETE      0x00200000
  107 #define AU_XIFLOAT      0x00400000
  108 #define AU_XPRIVS       0x00800000
  109 #define AU_XPRIVF       0x01000000
  110 #define AU_XMOVE        0x02000000
  111 #define AU_XDACF        0x04000000
  112 #define AU_XMACF        0x08000000
  113 #define AU_XSECATTR     0x10000000
  114 #define AU_IOCTL        0x20000000
  115 #define AU_EXEC         0x40000000
  116 #define AU_OTHER        0x80000000
  117 #define AU_ALL          0xffffffff
  118 
  119 /*
  120  * IPC types.
  121  */
  122 #define AT_IPC_MSG      ((u_char)1)     /* Message IPC id. */
  123 #define AT_IPC_SEM      ((u_char)2)     /* Semaphore IPC id. */
  124 #define AT_IPC_SHM      ((u_char)3)     /* Shared mem IPC id. */
  125 
  126 /*
  127  * Audit conditions.
  128  */
  129 #define AUC_UNSET               0
  130 #define AUC_AUDITING            1
  131 #define AUC_NOAUDIT             2
  132 #define AUC_DISABLED            -1
  133 
  134 /*
  135  * auditon(2) commands.
  136  */
  137 #define A_GETPOLICY     2
  138 #define A_SETPOLICY     3
  139 #define A_GETKMASK      4
  140 #define A_SETKMASK      5
  141 #define A_GETQCTRL      6
  142 #define A_SETQCTRL      7
  143 #define A_GETCWD        8
  144 #define A_GETCAR        9
  145 #define A_GETSTAT       12
  146 #define A_SETSTAT       13
  147 #define A_SETUMASK      14
  148 #define A_SETSMASK      15
  149 #define A_GETCOND       20
  150 #define A_SETCOND       21
  151 #define A_GETCLASS      22
  152 #define A_SETCLASS      23
  153 #define A_GETPINFO      24
  154 #define A_SETPMASK      25
  155 #define A_SETFSIZE      26
  156 #define A_GETFSIZE      27
  157 #define A_GETPINFO_ADDR 28
  158 #define A_GETKAUDIT     29
  159 #define A_SETKAUDIT     30
  160 #define A_SENDTRIGGER   31
  161 
  162 /*
  163  * Audit policy controls.
  164  */
  165 #define AUDIT_CNT       0x0001
  166 #define AUDIT_AHLT      0x0002
  167 #define AUDIT_ARGV      0x0004
  168 #define AUDIT_ARGE      0x0008
  169 #define AUDIT_SEQ       0x0010
  170 #define AUDIT_WINDATA   0x0020
  171 #define AUDIT_USER      0x0040
  172 #define AUDIT_GROUP     0x0080
  173 #define AUDIT_TRAIL     0x0100
  174 #define AUDIT_PATH      0x0200
  175 #define AUDIT_SCNT      0x0400
  176 #define AUDIT_PUBLIC    0x0800
  177 #define AUDIT_ZONENAME  0x1000
  178 #define AUDIT_PERZONE   0x2000
  179 
  180 /*
  181  * Default audit queue control parameters.
  182  */
  183 #define AQ_HIWATER      100
  184 #define AQ_MAXHIGH      10000
  185 #define AQ_LOWATER      10
  186 #define AQ_BUFSZ        MAXAUDITDATA
  187 #define AQ_MAXBUFSZ     1048576
  188 
  189 /*
  190  * Default minimum percentage free space on file system.
  191  */
  192 #define AU_FS_MINFREE   20
  193 
  194 /*
  195  * Type definitions used indicating the length of variable length addresses
  196  * in tokens containing addresses, such as header fields.
  197  */
  198 #define AU_IPv4         4
  199 #define AU_IPv6         16
  200 
  201 __BEGIN_DECLS
  202 
  203 typedef uid_t           au_id_t;
  204 typedef pid_t           au_asid_t;
  205 typedef u_int16_t       au_event_t;
  206 typedef u_int16_t       au_emod_t;
  207 typedef u_int32_t       au_class_t;
  208 
  209 struct au_tid {
  210         dev_t           port;
  211         u_int32_t       machine;
  212 };
  213 typedef struct au_tid   au_tid_t;
  214 
  215 struct au_tid_addr {
  216         dev_t           at_port;
  217         u_int32_t       at_type;
  218         u_int32_t       at_addr[4];
  219 };
  220 typedef struct au_tid_addr      au_tid_addr_t;
  221 
  222 struct au_mask {
  223         unsigned int    am_success;     /* Success bits. */
  224         unsigned int    am_failure;     /* Failure bits. */
  225 };
  226 typedef struct au_mask  au_mask_t;
  227 
  228 struct auditinfo {
  229         au_id_t         ai_auid;        /* Audit user ID. */
  230         au_mask_t       ai_mask;        /* Audit masks. */
  231         au_tid_t        ai_termid;      /* Terminal ID. */
  232         au_asid_t       ai_asid;        /* Audit session ID. */
  233 };
  234 typedef struct auditinfo        auditinfo_t;
  235 
  236 struct auditinfo_addr {
  237         au_id_t         ai_auid;        /* Audit user ID. */
  238         au_mask_t       ai_mask;        /* Audit masks. */
  239         au_tid_addr_t   ai_termid;      /* Terminal ID. */
  240         au_asid_t       ai_asid;        /* Audit session ID. */
  241 };
  242 typedef struct auditinfo_addr   auditinfo_addr_t;
  243 
  244 struct auditpinfo {
  245         pid_t           ap_pid;         /* ID of target process. */
  246         au_id_t         ap_auid;        /* Audit user ID. */
  247         au_mask_t       ap_mask;        /* Audit masks. */
  248         au_tid_t        ap_termid;      /* Terminal ID. */
  249         au_asid_t       ap_asid;        /* Audit session ID. */
  250 };
  251 typedef struct auditpinfo       auditpinfo_t;
  252 
  253 struct auditpinfo_addr {
  254         pid_t           ap_pid;         /* ID of target process. */
  255         au_id_t         ap_auid;        /* Audit user ID. */
  256         au_mask_t       ap_mask;        /* Audit masks. */
  257         au_tid_addr_t   ap_termid;      /* Terminal ID. */
  258         au_asid_t       ap_asid;        /* Audit session ID. */
  259 };
  260 typedef struct auditpinfo_addr  auditpinfo_addr_t;
  261 
  262 /*
  263  * Contents of token_t are opaque outside of libbsm.
  264  */
  265 typedef struct au_token token_t;
  266 
  267 /*
  268  * Kernel audit queue control parameters.
  269  */
  270 struct au_qctrl {
  271         size_t  aq_hiwater;
  272         size_t  aq_lowater;
  273         size_t  aq_bufsz;
  274         clock_t aq_delay;
  275         int     aq_minfree;     /* Minimum filesystem percent free space. */
  276 };
  277 typedef struct au_qctrl au_qctrl_t;
  278 
  279 /*
  280  * Structure for the audit statistics.
  281  */
  282 struct audit_stat {
  283         unsigned int    as_version;
  284         unsigned int    as_numevent;
  285         int             as_generated;
  286         int             as_nonattrib;
  287         int             as_kernel;
  288         int             as_audit;
  289         int             as_auditctl;
  290         int             as_enqueue;
  291         int             as_written;
  292         int             as_wblocked;
  293         int             as_rblocked;
  294         int             as_dropped;
  295         int             as_totalsize;
  296         unsigned int    as_memused;
  297 };
  298 typedef struct audit_stat       au_stat_t;
  299 
  300 /*
  301  * Structure for the audit file statistics.
  302  */
  303 struct audit_fstat {
  304         u_quad_t        af_filesz;
  305         u_quad_t        af_currsz;
  306 };
  307 typedef struct audit_fstat      au_fstat_t;
  308 
  309 /*
  310  * Audit to event class mapping.
  311  */
  312 struct au_evclass_map {
  313         au_event_t      ec_number;
  314         au_class_t      ec_class;
  315 };
  316 typedef struct au_evclass_map   au_evclass_map_t;
  317 
  318 /*
  319  * Audit system calls.
  320  */
  321 #if !defined(_KERNEL) && !defined(KERNEL)
  322 int     audit(const void *, int);
  323 int     auditon(int, void *, int);
  324 int     auditctl(const char *);
  325 int     getauid(au_id_t *);
  326 int     setauid(const au_id_t *);
  327 int     getaudit(struct auditinfo *);
  328 int     setaudit(const struct auditinfo *);
  329 int     getaudit_addr(struct auditinfo_addr *, int);
  330 int     setaudit_addr(const struct auditinfo_addr *, int);
  331 #endif /* defined(_KERNEL) || defined(KERNEL) */
  332 
  333 __END_DECLS
  334 
  335 #endif /* !_BSM_AUDIT_H */

Cache object: 88a9c1e9d03324bbd99b246dedf53ba6


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