Home | History | Annotate | Download | only in c2
      1     0    stevel /*
      2     0    stevel  * CDDL HEADER START
      3     0    stevel  *
      4     0    stevel  * The contents of this file are subject to the terms of the
      5  1676       jpk  * Common Development and Distribution License (the "License").
      6  1676       jpk  * You may not use this file except in compliance with the License.
      7     0    stevel  *
      8     0    stevel  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
      9     0    stevel  * or http://www.opensolaris.org/os/licensing.
     10     0    stevel  * See the License for the specific language governing permissions
     11     0    stevel  * and limitations under the License.
     12     0    stevel  *
     13     0    stevel  * When distributing Covered Code, include this CDDL HEADER in each
     14     0    stevel  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     15     0    stevel  * If applicable, add the following below this CDDL HEADER, with the
     16     0    stevel  * fields enclosed by brackets "[]" replaced with your own identifying
     17     0    stevel  * information: Portions Copyright [yyyy] [name of copyright owner]
     18     0    stevel  *
     19     0    stevel  * CDDL HEADER END
     20     0    stevel  */
     21     0    stevel /*
     22  9487     Marek  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
     23     0    stevel  * Use is subject to license terms.
     24     0    stevel  */
     25     0    stevel 
     26     0    stevel #ifndef _BSM_AUDIT_RECORD_H
     27     0    stevel #define	_BSM_AUDIT_RECORD_H
     28     0    stevel 
     29     0    stevel 
     30     0    stevel #ifdef _KERNEL
     31     0    stevel #include <sys/priv.h>
     32     0    stevel #else
     33     0    stevel #include <priv.h>
     34     0    stevel #endif
     35     0    stevel #include <sys/socket.h>
     36     0    stevel #include <sys/acl.h>
     37     0    stevel 
     38     0    stevel #include <sys/tsol/label.h>
     39     0    stevel 
     40     0    stevel #ifdef __cplusplus
     41     0    stevel extern "C" {
     42     0    stevel #endif
     43     0    stevel 
     44     0    stevel /*
     45     0    stevel  * Version of audit attributes
     46     0    stevel  *
     47     0    stevel  * OS Release      Version Number    Comments
     48     0    stevel  * ==========      ==============    ========
     49     0    stevel  * SunOS 5.1              2        Unbundled Package
     50     0    stevel  * SunOS 5.3              2        Bundled into the base OS
     51     0    stevel  * SunOS 5.4-5.x          2
     52     0    stevel  * Trusted Solaris 2.5    3        To distinguish potential new tokens
     53     0    stevel  * Trusted Solaris 7-8    4        Redefine X tokens that overlap with
     54     0    stevel  *                                 SunOS 5.7
     55     0    stevel  */
     56     0    stevel 
     57     0    stevel #define	TOKEN_VERSION   2
     58     0    stevel 
     59     0    stevel /*
     60     0    stevel  * Audit record token type codes
     61     0    stevel  */
     62     0    stevel 
     63     0    stevel /*
     64     0    stevel  * Control token types
     65     0    stevel  */
     66     0    stevel 
     67     0    stevel #define	AUT_INVALID		((char)0x00)
     68     0    stevel #define	AUT_OTHER_FILE		((char)0x11)
     69     0    stevel #define	AUT_OTHER_FILE32	AUT_OTHER_FILE
     70     0    stevel #define	AUT_OHEADER		((char)0x12)
     71     0    stevel #define	AUT_TRAILER		((char)0x13)
     72     0    stevel #define	AUT_HEADER		((char)0x14)
     73     0    stevel #define	AUT_HEADER32		AUT_HEADER
     74     0    stevel #define	AUT_HEADER32_EX		((char)0x15)
     75     0    stevel #define	AUT_TRAILER_MAGIC	((short)0xB105)
     76     0    stevel 
     77     0    stevel /*
     78     0    stevel  * Data token types
     79     0    stevel  */
     80     0    stevel 
     81  1780       gww #define	AUT_FMRI		((char)0x20)
     82     0    stevel #define	AUT_DATA		((char)0x21)
     83     0    stevel #define	AUT_IPC			((char)0x22)
     84     0    stevel #define	AUT_PATH		((char)0x23)
     85     0    stevel #define	AUT_SUBJECT		((char)0x24)
     86     0    stevel #define	AUT_SUBJECT32		AUT_SUBJECT
     87     0    stevel #define	AUT_XATPATH		((char)0x25)
     88     0    stevel #define	AUT_PROCESS		((char)0x26)
     89     0    stevel #define	AUT_PROCESS32		AUT_PROCESS
     90     0    stevel #define	AUT_RETURN		((char)0x27)
     91     0    stevel #define	AUT_RETURN32		AUT_RETURN
     92     0    stevel #define	AUT_TEXT		((char)0x28)
     93     0    stevel #define	AUT_OPAQUE		((char)0x29)
     94     0    stevel #define	AUT_IN_ADDR		((char)0x2A)
     95     0    stevel #define	AUT_IP			((char)0x2B)
     96     0    stevel #define	AUT_IPORT		((char)0x2C)
     97     0    stevel #define	AUT_ARG			((char)0x2D)
     98     0    stevel #define	AUT_ARG32		AUT_ARG
     99     0    stevel #define	AUT_SOCKET		((char)0x2E)
    100     0    stevel #define	AUT_SEQ			((char)0x2F)
    101     0    stevel #define	AUT_TID			((char)0x61)
    102     0    stevel 
    103     0    stevel /*
    104     0    stevel  * Modifier token types
    105     0    stevel  */
    106     0    stevel 
    107     0    stevel #define	AUT_ACL			((char)0x30)
    108     0    stevel #define	AUT_ATTR		((char)0x31)
    109     0    stevel #define	AUT_IPC_PERM		((char)0x32)
    110     0    stevel #define	AUT_LABEL		((char)0x33)
    111     0    stevel #define	AUT_GROUPS		((char)0x34)
    112  5344  tz204579 #define	AUT_ACE			((char)0x35)
    113  2425       gww /*
    114  5344  tz204579  * 0x36, 0x37 unused
    115  2425       gww  */
    116     0    stevel #define	AUT_PRIV		((char)0x38)
    117     0    stevel #define	AUT_UPRIV		((char)0x39)
    118     0    stevel #define	AUT_LIAISON		((char)0x3A)
    119     0    stevel #define	AUT_NEWGROUPS		((char)0x3B)
    120     0    stevel #define	AUT_EXEC_ARGS		((char)0x3C)
    121     0    stevel #define	AUT_EXEC_ENV		((char)0x3D)
    122     0    stevel #define	AUT_ATTR32		((char)0x3E)
    123     0    stevel #define	AUT_UAUTH		((char)0x3F)
    124     0    stevel #define	AUT_ZONENAME		((char)0x60)
    125     0    stevel 
    126     0    stevel /*
    127     0    stevel  * X windows token types
    128     0    stevel  */
    129     0    stevel 
    130     0    stevel #define	AUT_XATOM		((char)0x40)
    131     0    stevel #define	AUT_XOBJ		((char)0x41)
    132     0    stevel #define	AUT_XPROTO		((char)0x42)
    133     0    stevel #define	AUT_XSELECT		((char)0x43)
    134     0    stevel 
    135     0    stevel #if	TOKEN_VERSION != 3
    136     0    stevel #define	AUT_XCOLORMAP		((char)0x44)
    137     0    stevel #define	AUT_XCURSOR		((char)0x45)
    138     0    stevel #define	AUT_XFONT		((char)0x46)
    139     0    stevel #define	AUT_XGC			((char)0x47)
    140     0    stevel #define	AUT_XPIXMAP		((char)0x48)
    141     0    stevel #define	AUT_XPROPERTY		((char)0x49)
    142     0    stevel #define	AUT_XWINDOW		((char)0x4A)
    143     0    stevel #define	AUT_XCLIENT		((char)0x4B)
    144     0    stevel #else	/* TOKEN_VERSION == 3 */
    145     0    stevel #define	AUT_XCOLORMAP		((char)0x74)
    146     0    stevel #define	AUT_XCURSOR		((char)0x75)
    147     0    stevel #define	AUT_XFONT		((char)0x76)
    148     0    stevel #define	AUT_XGC			((char)0x77)
    149     0    stevel #define	AUT_XPIXMAP		((char)0x78)
    150     0    stevel #define	AUT_XPROPERTY		((char)0x79)
    151     0    stevel #define	AUT_XWINDOW		((char)0x7A)
    152     0    stevel #define	AUT_XCLIENT		((char)0x7B)
    153     0    stevel #endif	/* TOKEN_VERSION != 3 */
    154     0    stevel 
    155     0    stevel /*
    156     0    stevel  * Command token types
    157     0    stevel  */
    158     0    stevel 
    159     0    stevel #define	AUT_CMD   		((char)0x51)
    160     0    stevel #define	AUT_EXIT   		((char)0x52)
    161     0    stevel 
    162     0    stevel /*
    163     0    stevel  * Miscellaneous token types
    164     0    stevel  */
    165     0    stevel 
    166     0    stevel #define	AUT_HOST		((char)0x70)
    167     0    stevel 
    168     0    stevel /*
    169     0    stevel  * Solaris64 token types
    170     0    stevel  */
    171     0    stevel 
    172     0    stevel #define	AUT_ARG64		((char)0x71)
    173     0    stevel #define	AUT_RETURN64		((char)0x72)
    174     0    stevel #define	AUT_ATTR64		((char)0x73)
    175     0    stevel #define	AUT_HEADER64		((char)0x74)
    176     0    stevel #define	AUT_SUBJECT64		((char)0x75)
    177     0    stevel #define	AUT_PROCESS64		((char)0x77)
    178     0    stevel #define	AUT_OTHER_FILE64	((char)0x78)
    179     0    stevel 
    180     0    stevel /*
    181     0    stevel  * Extended network address token types
    182     0    stevel  */
    183     0    stevel 
    184     0    stevel #define	AUT_HEADER64_EX		((char)0x79)
    185     0    stevel #define	AUT_SUBJECT32_EX	((char)0x7a)
    186     0    stevel #define	AUT_PROCESS32_EX	((char)0x7b)
    187     0    stevel #define	AUT_SUBJECT64_EX	((char)0x7c)
    188     0    stevel #define	AUT_PROCESS64_EX	((char)0x7d)
    189     0    stevel #define	AUT_IN_ADDR_EX		((char)0x7e)
    190     0    stevel #define	AUT_SOCKET_EX		((char)0x7f)
    191     0    stevel 
    192     0    stevel 
    193     0    stevel /*
    194     0    stevel  * Audit print suggestion types.
    195     0    stevel  */
    196     0    stevel 
    197     0    stevel #define	AUP_BINARY	((char)0)
    198     0    stevel #define	AUP_OCTAL	((char)1)
    199     0    stevel #define	AUP_DECIMAL	((char)2)
    200     0    stevel #define	AUP_HEX		((char)3)
    201     0    stevel #define	AUP_STRING	((char)4)
    202     0    stevel 
    203     0    stevel /*
    204     0    stevel  * Audit data member types.
    205     0    stevel  */
    206     0    stevel 
    207     0    stevel #define	AUR_BYTE	((char)0)
    208     0    stevel #define	AUR_CHAR	((char)0)
    209     0    stevel #define	AUR_SHORT	((char)1)
    210     0    stevel #define	AUR_INT		((char)2)
    211     0    stevel #define	AUR_INT32	((char)2)
    212     0    stevel #define	AUR_INT64	((char)3)
    213     0    stevel 
    214     0    stevel /*
    215     0    stevel  * Adr structures
    216     0    stevel  */
    217     0    stevel 
    218     0    stevel struct adr_s {
    219     0    stevel 	char *adr_stream;	/* The base of the stream */
    220     0    stevel 	char *adr_now;		/* The location within the stream */
    221     0    stevel };
    222     0    stevel 
    223     0    stevel typedef struct adr_s adr_t;
    224     0    stevel 
    225     0    stevel 
    226     0    stevel #ifdef _KERNEL
    227     0    stevel 
    228     0    stevel #include <sys/param.h>
    229     0    stevel #include <sys/systm.h>		/* for rval */
    230     0    stevel #include <sys/time.h>
    231     0    stevel #include <sys/types.h>
    232     0    stevel #include <sys/vnode.h>
    233     0    stevel #include <sys/mode.h>
    234     0    stevel #include <sys/user.h>
    235     0    stevel #include <sys/session.h>
    236     0    stevel #include <sys/ipc_impl.h>
    237     0    stevel #include <netinet/in_systm.h>
    238     0    stevel #include <netinet/in.h>
    239     0    stevel #include <netinet/ip.h>
    240     0    stevel #include <sys/socket.h>
    241     0    stevel #include <net/route.h>
    242     0    stevel #include <netinet/in_pcb.h>
    243     0    stevel 
    244     0    stevel /*
    245     0    stevel  * au_close flag arguments
    246     0    stevel  */
    247     0    stevel 
    248     0    stevel #define	AU_OK		0x1	/* Good audit record */
    249     0    stevel #define	AU_DONTBLOCK	0x2	/* Don't block or discard if queue full */
    250     0    stevel #define	AU_DEFER	0x4	/* Defer record queueing to syscall end */
    251     0    stevel 
    252     0    stevel /*
    253     0    stevel  * Audit token type is really an au_membuf pointer
    254     0    stevel  */
    255     0    stevel typedef au_buff_t token_t;
    256     0    stevel /*
    257     0    stevel  * token generation functions
    258     0    stevel  */
    259     0    stevel token_t *au_append_token(token_t *, token_t *);
    260     0    stevel token_t *au_set(caddr_t, uint_t);
    261     0    stevel 
    262     0    stevel void au_free_rec(au_buff_t *);
    263     0    stevel 
    264     0    stevel #define	au_getclr()		((token_t *)au_get_buff())
    265     0    stevel #define	au_toss_token(tok)	(au_free_rec((au_buff_t *)(tok)))
    266     0    stevel 
    267     0    stevel token_t *au_to_acl();
    268  5344  tz204579 token_t *au_to_ace();
    269     0    stevel token_t *au_to_attr(struct vattr *);
    270     0    stevel token_t *au_to_data(char, char, char, char *);
    271     0    stevel token_t *au_to_header(int, au_event_t, au_emod_t);
    272     0    stevel token_t *au_to_header_ex(int, au_event_t, au_emod_t);
    273     0    stevel token_t *au_to_ipc(char, int);
    274     0    stevel token_t *au_to_ipc_perm(kipc_perm_t *);
    275     0    stevel token_t *au_to_iport(ushort_t);
    276     0    stevel token_t *au_to_in_addr(struct in_addr *);
    277     0    stevel token_t *au_to_in_addr_ex(int32_t *);
    278     0    stevel token_t *au_to_ip(struct ip *);
    279     0    stevel token_t *au_to_groups(const gid_t *, uint_t);
    280     0    stevel token_t *au_to_path(struct audit_path *);
    281     0    stevel token_t *au_to_seq();
    282     0    stevel token_t *au_to_process(uid_t, gid_t, uid_t, gid_t, pid_t,
    283     0    stevel 			au_id_t, au_asid_t, const au_tid_addr_t *);
    284     0    stevel token_t *au_to_subject(uid_t, gid_t, uid_t, gid_t, pid_t,
    285     0    stevel 			au_id_t, au_asid_t, const au_tid_addr_t *);
    286     0    stevel token_t *au_to_return32(int, int32_t);
    287     0    stevel token_t *au_to_return64(int, int64_t);
    288     0    stevel token_t *au_to_text(const char *);
    289     0    stevel /* token_t *au_to_tid(au_generic_tid_t *);  no kernel implementation */
    290     0    stevel token_t *au_to_trailer(int);
    291     0    stevel token_t *au_to_uauth(char *);
    292  4165  tz204579 size_t	au_zonename_length(zone_t *);
    293  4165  tz204579 token_t *au_to_zonename(size_t, zone_t *);
    294     0    stevel token_t *au_to_arg32(char, char *, uint32_t);
    295     0    stevel token_t *au_to_arg64(char, char *, uint64_t);
    296     0    stevel token_t *au_to_socket_ex(short, short, char *, char *);
    297     0    stevel token_t *au_to_sock_inet(struct sockaddr_in *);
    298     0    stevel token_t *au_to_exec_args(const char *, ssize_t);
    299     0    stevel token_t *au_to_exec_env(const char *, ssize_t);
    300  1676       jpk token_t	*au_to_label(bslabel_t *);
    301     0    stevel token_t	*au_to_privset(const char *, const priv_set_t *, char, int);
    302     0    stevel 
    303     0    stevel void	au_uwrite();
    304     0    stevel void	au_close(au_kcontext_t *, caddr_t *, int, au_event_t, au_emod_t);
    305     0    stevel void	au_close_defer(token_t *, int, au_event_t, au_emod_t);
    306     0    stevel void	au_close_time(au_kcontext_t *, token_t *, int, au_event_t, au_emod_t,
    307     0    stevel 	    timestruc_t *);
    308     0    stevel void	au_free_rec(au_buff_t *);
    309     0    stevel void	au_write(caddr_t *, token_t *);
    310     0    stevel void	au_mem_init(void);
    311     0    stevel void	au_zone_setup();
    312     0    stevel void	au_enqueue(au_kcontext_t *, au_buff_t *, adr_t *, adr_t *, int, int);
    313     0    stevel int	au_doorio(au_kcontext_t *);
    314     0    stevel int	au_doormsg(au_kcontext_t *, uint32_t, void *);
    315     0    stevel int	au_token_size(token_t *);
    316     0    stevel int	au_append_rec(au_buff_t *, au_buff_t *, int);
    317     0    stevel int	au_append_buf(const char *, int, au_buff_t *);
    318     0    stevel 
    319     0    stevel #else /* !_KERNEL */
    320     0    stevel 
    321     0    stevel #include <limits.h>
    322     0    stevel #include <sys/types.h>
    323     0    stevel #include <sys/vnode.h>
    324     0    stevel #include <netinet/in_systm.h>
    325     0    stevel #include <netinet/in.h>
    326     0    stevel #include <netinet/ip.h>
    327     0    stevel #include <sys/ipc.h>
    328     0    stevel 
    329     0    stevel struct token_s {
    330     0    stevel 	struct token_s	*tt_next;	/* Next in the list	*/
    331     0    stevel 	short		tt_size;	/* Size of data		*/
    332     0    stevel 	char		*tt_data;	/* The data		*/
    333     0    stevel };
    334     0    stevel typedef struct token_s token_t;
    335     0    stevel 
    336     0    stevel /*
    337     0    stevel  *	Old socket structure definition, formerly in <sys/socketvar.h>
    338     0    stevel  */
    339     0    stevel struct oldsocket {
    340     0    stevel 	short	so_type;		/* generic type, see socket.h */
    341     0    stevel 	short	so_options;		/* from socket call, see socket.h */
    342     0    stevel 	short	so_linger;		/* time to linger while closing */
    343     0    stevel 	short	so_state;		/* internal state flags SS_*, below */
    344     0    stevel 	struct inpcb	*so_pcb;	/* protocol control block */
    345     0    stevel 	struct	protosw *so_proto;	/* protocol handle */
    346     0    stevel /*
    347     0    stevel  * Variables for connection queueing.
    348     0    stevel  * Socket where accepts occur is so_head in all subsidiary sockets.
    349     0    stevel  * If so_head is 0, socket is not related to an accept.
    350     0    stevel  * For head socket so_q0 queues partially completed connections,
    351     0    stevel  * while so_q is a queue of connections ready to be accepted.
    352     0    stevel  * If a connection is aborted and it has so_head set, then
    353     0    stevel  * it has to be pulled out of either so_q0 or so_q.
    354     0    stevel  * We allow connections to queue up based on current queue lengths
    355     0    stevel  * and limit on number of queued connections for this socket.
    356     0    stevel  */
    357     0    stevel 	struct	oldsocket *so_head;	/* back pointer to accept socket */
    358     0    stevel 	struct	oldsocket *so_q0;	/* queue of partial connections */
    359     0    stevel 	struct	oldsocket *so_q;	/* queue of incoming connections */
    360     0    stevel 	short	so_q0len;		/* partials on so_q0 */
    361     0    stevel 	short	so_qlen;		/* number of connections on so_q */
    362     0    stevel 	short	so_qlimit;		/* max number queued connections */
    363     0    stevel 	short	so_timeo;		/* connection timeout */
    364     0    stevel 	ushort_t so_error;		/* error affecting connection */
    365     0    stevel 	short	so_pgrp;		/* pgrp for signals */
    366     0    stevel 	ulong_t	so_oobmark;		/* chars to oob mark */
    367     0    stevel /*
    368     0    stevel  * Variables for socket buffering.
    369     0    stevel  */
    370     0    stevel 	struct	sockbuf {
    371     0    stevel 		ulong_t	sb_cc;		/* actual chars in buffer */
    372     0    stevel 		ulong_t	sb_hiwat;	/* max actual char count */
    373     0    stevel 		ulong_t	sb_mbcnt;	/* chars of mbufs used */
    374     0    stevel 		ulong_t	sb_mbmax;	/* max chars of mbufs to use */
    375     0    stevel 		ulong_t	sb_lowat;	/* low water mark (not used yet) */
    376     0    stevel 		struct	mbuf *sb_mb;	/* the mbuf chain */
    377     0    stevel 		struct	proc *sb_sel;	/* process selecting read/write */
    378     0    stevel 		short	sb_timeo;	/* timeout (not used yet) */
    379     0    stevel 		short	sb_flags;	/* flags, see below */
    380     0    stevel 	} so_rcv, so_snd;
    381     0    stevel /*
    382     0    stevel  * Hooks for alternative wakeup strategies.
    383     0    stevel  * These are used by kernel subsystems wishing to access the socket
    384     0    stevel  * abstraction.  If so_wupfunc is nonnull, it is called in place of
    385     0    stevel  * wakeup any time that wakeup would otherwise be called with an
    386     0    stevel  * argument whose value is an address lying within a socket structure.
    387     0    stevel  */
    388     0    stevel 	struct wupalt	*so_wupalt;
    389     0    stevel };
    390     0    stevel extern token_t *au_to_arg32(char, char *, uint32_t);
    391     0    stevel extern token_t *au_to_arg64(char, char *, uint64_t);
    392     0    stevel extern token_t *au_to_acl(struct acl *);
    393     0    stevel extern token_t *au_to_attr(struct vattr *);
    394     0    stevel extern token_t *au_to_cmd(uint_t, char **, char **);
    395     0    stevel extern token_t *au_to_data(char, char, char, char *);
    396     0    stevel extern token_t *au_to_exec_args(char **);
    397     0    stevel extern token_t *au_to_exec_env(char **);
    398     0    stevel extern token_t *au_to_exit(int, int);
    399  1780       gww extern token_t *au_to_fmri(char *);
    400     0    stevel extern token_t *au_to_groups(int *);
    401     0    stevel extern token_t *au_to_newgroups(int, gid_t *);
    402     0    stevel extern token_t *au_to_header(au_event_t, au_emod_t);
    403     0    stevel extern token_t *au_to_header_ex(au_event_t, au_emod_t);
    404     0    stevel extern token_t *au_to_in_addr(struct in_addr *);
    405  5537       gww extern token_t *au_to_in_addr_ex(struct in6_addr *);
    406     0    stevel extern token_t *au_to_ipc(char, int);
    407     0    stevel extern token_t *au_to_ipc_perm(struct ipc_perm *);
    408     0    stevel extern token_t *au_to_iport(ushort_t);
    409     0    stevel extern token_t *au_to_me(void);
    410  1676       jpk extern token_t *au_to_mylabel(void);
    411     0    stevel extern token_t *au_to_opaque(char *, short);
    412     0    stevel extern token_t *au_to_path(char *);
    413     0    stevel extern token_t *au_to_privset(const char *, const priv_set_t *);
    414     0    stevel extern token_t *au_to_process(au_id_t, uid_t, gid_t, uid_t, gid_t,
    415     0    stevel 				pid_t, au_asid_t, au_tid_t *);
    416     0    stevel extern token_t *au_to_process_ex(au_id_t, uid_t, gid_t, uid_t, gid_t,
    417     0    stevel 				pid_t, au_asid_t, au_tid_addr_t *);
    418     0    stevel extern token_t *au_to_return32(char, uint32_t);
    419     0    stevel extern token_t *au_to_return64(char, uint64_t);
    420     0    stevel extern token_t *au_to_seq(int);
    421  2425       gww extern token_t *au_to_label(m_label_t *);
    422     0    stevel extern token_t *au_to_socket(struct oldsocket *);
    423     0    stevel extern token_t *au_to_subject(au_id_t, uid_t, gid_t, uid_t, gid_t,
    424     0    stevel 				pid_t, au_asid_t, au_tid_t *);
    425     0    stevel extern token_t *au_to_subject_ex(au_id_t, uid_t, gid_t, uid_t, gid_t,
    426     0    stevel 				pid_t, au_asid_t, au_tid_addr_t *);
    427     0    stevel extern token_t *au_to_text(char *);
    428     0    stevel extern token_t *au_to_tid(au_generic_tid_t *);
    429     0    stevel extern token_t *au_to_trailer(void);
    430     0    stevel extern token_t *au_to_uauth(char *);
    431  5012       gww extern token_t *au_to_upriv(char, char *);
    432  5012       gww extern token_t *au_to_xatom(char *);
    433  5012       gww extern token_t *au_to_xselect(char *, char *, char *);
    434  5012       gww extern token_t *au_to_xcolormap(int32_t, uid_t);
    435  5012       gww extern token_t *au_to_xcursor(int32_t, uid_t);
    436  5012       gww extern token_t *au_to_xfont(int32_t, uid_t);
    437  5012       gww extern token_t *au_to_xgc(int32_t, uid_t);
    438  5012       gww extern token_t *au_to_xpixmap(int32_t, uid_t);
    439  5012       gww extern token_t *au_to_xwindow(int32_t, uid_t);
    440  5012       gww extern token_t *au_to_xproperty(int32_t, uid_t, char *);
    441  5012       gww extern token_t *au_to_xclient(uint32_t);
    442     0    stevel extern token_t *au_to_zonename(char *);
    443     0    stevel #endif /* _KERNEL */
    444     0    stevel 
    445     0    stevel #ifdef	_KERNEL
    446     0    stevel 
    447     0    stevel void	adr_char(adr_t *, char *, int);
    448     0    stevel void	adr_int32(adr_t *, int32_t *, int);
    449     0    stevel void	adr_uint32(adr_t *, uint32_t *, int);
    450     0    stevel void	adr_int64(adr_t *, int64_t *, int);
    451     0    stevel void	adr_uint64(adr_t *, uint64_t *, int);
    452     0    stevel void	adr_short(adr_t *, short *, int);
    453     0    stevel void	adr_ushort(adr_t *, ushort_t *, int);
    454     0    stevel void	adr_start(adr_t *, char *);
    455     0    stevel 
    456     0    stevel char	*adr_getchar(adr_t *, char *);
    457     0    stevel char	*adr_getshort(adr_t *, short  *);
    458     0    stevel char	*adr_getushort(adr_t *, ushort_t  *);
    459     0    stevel char	*adr_getint32(adr_t *, int32_t *);
    460     0    stevel char	*adr_getuint32(adr_t *, uint32_t *);
    461     0    stevel char	*adr_getint64(adr_t *, int64_t *);
    462     0    stevel char	*adr_getuint64(adr_t *, uint64_t *);
    463     0    stevel 
    464     0    stevel int	adr_count(adr_t *);
    465     0    stevel 
    466     0    stevel #endif	/* _KERNEL */
    467     0    stevel 
    468     0    stevel #ifdef __cplusplus
    469     0    stevel }
    470     0    stevel #endif
    471     0    stevel 
    472     0    stevel #endif /* _BSM_AUDIT_RECORD_H */
    473