usr/src/lib/libbsm/common/adt_xlate.h
author jpk
Fri, 24 Mar 2006 12:29:20 -0800
changeset 1676 37f4a3e2bd99
parent 1641 92e02eae5600
child 2835 f945d5cf0676
permissions -rw-r--r--
PSARC/2002/762 Layered Trusted Solaris PSARC/2005/060 TSNET: Trusted Networking with Security Labels PSARC/2005/259 Layered Trusted Solaris Label Interfaces PSARC/2005/573 Solaris Trusted Extensions for Printing PSARC/2005/691 Trusted Extensions for Device Allocation PSARC/2005/723 Solaris Trusted Extensions Filesystem Labeling PSARC/2006/009 Labeled Auditing PSARC/2006/155 Trusted Extensions RBAC Changes PSARC/2006/191 is_system_labeled 6293271 Zone processes should use zone_kcred instead of kcred 6394554 integrate Solaris Trusted Extensions
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     1
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     2
 * CDDL HEADER START
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     3
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
1641
92e02eae5600 6385197 libbsm:adt_set_proc() is unable to assign an unaudited context to a process
paulson
parents: 0
diff changeset
     5
 * Common Development and Distribution License (the "License").
92e02eae5600 6385197 libbsm:adt_set_proc() is unable to assign an unaudited context to a process
paulson
parents: 0
diff changeset
     6
 * You may not use this file except in compliance with the License.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     7
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    15
 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    16
 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    17
 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
 * CDDL HEADER END
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    20
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    21
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    22
 * adt_xlate.h
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    23
 *
1641
92e02eae5600 6385197 libbsm:adt_set_proc() is unable to assign an unaudited context to a process
paulson
parents: 0
diff changeset
    24
 * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
 * Use is subject to license terms.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
#ifndef _BSM_XLATE_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
#define	_BSM_XLATE_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
#pragma ident	"%Z%%M%	%I%	%E% SMI"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
#include <bsm/libbsm.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
#include <priv.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
#include <bsm/adt_event.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
extern "C" {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
#ifndef TEXT_DOMAIN
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
#define	TEXT_DOMAIN	"SYS_TEST"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
 * values for adt_session_model
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
 * In the session model, the session and process are unrelated, so
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
 * such things as the supplementary group token make no sense.  In
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
 * the process model, the process and session are the same.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
#define	ADT_SESSION_MODEL	1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
#define	ADT_PROCESS_MODEL	0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
#define	ADT_HAVE_MASK	0x01
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
#define	ADT_HAVE_TID	0x02
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
#define	ADT_HAVE_AUID	0x04
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
#define	ADT_HAVE_ASID	0x08
1641
92e02eae5600 6385197 libbsm:adt_set_proc() is unable to assign an unaudited context to a process
paulson
parents: 0
diff changeset
    59
#define	ADT_HAVE_IDS	0x10
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    60
#define	ADT_HAVE_ALL	(uint32_t)\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    61
	(ADT_HAVE_MASK | ADT_HAVE_TID | ADT_HAVE_AUID | ADT_HAVE_ASID |\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    62
	ADT_HAVE_IDS)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    63
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
 * dummy token types for privilege
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
#define	ADT_AUT_PRIV_L	-100	/* limit set */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
#define	ADT_AUT_PRIV_I	-101	/* inherited set */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
#define	ADT_AUT_PRIV_E	-102	/* effective set */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
/* dummy token type for alternate command */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
#define	ADT_CMD_ALT	-103
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
enum adt_generic {ADT_GENERIC}; /* base for text enums */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    74
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
typedef struct adt_internal_state	adt_internal_state_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
union union_of_events {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
	union adt_event_data	d0;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
enum adt_msg_list {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
	ADT_LIST_FAIL_PAM,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
	ADT_LIST_FAIL_VALUE,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
	ADT_LIST_LOGIN_TEXT};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
enum datatype {ADT_UNDEFINED = 0,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
    ADT_DATE,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
    ADT_MSG,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
    ADT_UINT,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
    ADT_INT,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    90
    ADT_INT32,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    91
    ADT_UINT16,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
    ADT_UINT32,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
    ADT_UINT32STAR,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
    ADT_UINT32ARRAY,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
    ADT_UID,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
    ADT_GID,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
    ADT_UIDSTAR,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    98
    ADT_GIDSTAR,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    99
    ADT_UINT64,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   100
    ADT_LONG,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   101
    ADT_ULONG,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   102
    ADT_CHAR,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   103
    ADT_CHARSTAR,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   104
    ADT_CHAR2STAR,	/* char **			*/
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   105
    ADT_PID,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   106
    ADT_PRIVSTAR,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   107
    ADT_TERMIDSTAR
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   108
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   109
typedef enum datatype datatype_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   110
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   111
union convert {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   112
    enum adt_generic	msg_selector;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   113
    boolean_t		tbool;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   114
    uint_t		tuint;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   115
    int			tint;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   116
    int32_t		tint32;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   117
    uint16_t		tuint16;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   118
    uint32_t		tuint32;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   119
    uint64_t		tuint64;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   120
    int32_t		*tint32star;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   121
    uint32_t		*tuint32star;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   122
    uid_t		tuid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   123
    gid_t		tgid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   124
    uid_t		*tuidstar;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   125
    gid_t		*tgidstar;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   126
    pid_t		tpid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   127
    long		tlong;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   128
    ulong_t		tulong;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   129
    char		tchar;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   130
    char		*tcharstar;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   131
    char		**tchar2star;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   132
    au_tid_addr_t 	*ttermid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   133
    priv_set_t		*tprivstar;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   134
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   135
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   136
struct adt_event_state {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   137
	union union_of_events	ae_event_data;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   138
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   139
	/* above is user's area; below is internal.  Order matters */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   140
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   141
	uint_t		ae_check;	/* see adt_internal_state	*/
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   142
	int		ae_event_handle;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   143
	au_event_t	ae_event_id;	/* external id			*/
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   144
	au_event_t	ae_internal_id; /* translated			*/
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   145
	int		ae_rc;		/* exit token rc		*/
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   146
	int		ae_type;	/* exit error type		*/
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   147
	struct adt_internal_state *ae_session;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   148
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   149
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   150
struct datadefs {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   151
	datatype_t	dd_datatype;	/* input data type */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   152
	size_t		dd_input_size;	/* input data size */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   153
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   154
typedef struct datadefs datadef;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   155
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   156
typedef void (* adt_token_func_t)(datadef *, void *, int,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   157
    struct adt_event_state *, char *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   158
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   159
typedef char *(* adt_msg_func_t)(enum adt_generic);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   160
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   161
#define	ADT_VALID	0xAAAA5555
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   162
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   163
struct adt_internal_state {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   164
	uint32_t	as_check;	/* == ADT_VALID when created,	*/
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   165
					/* == zero when freed		*/
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   166
	uid_t		as_euid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   167
	uid_t		as_ruid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   168
	gid_t		as_egid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   169
	gid_t		as_rgid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   170
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   171
	struct auditinfo_addr as_info;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   172
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   173
	 * ai_auid				audit id
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   174
	 * ai_mask.am_success			pre-selection mask
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   175
	 * ai_mask.am_failure
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   176
	 * ai_termid	.at_port		terminal id
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   177
	 *		.at_type
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   178
	 *		.ai_termid.at_addr[0]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   179
	 *		.ai_termid.at_addr[1]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   180
	 *		.ai_termid.at_addr[2]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   181
	 *		.ai_termid.at_addr[3]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   182
	 * ai_asid				session id
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   183
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   184
	int		as_audit_enabled;	/* audit enable/disable state */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   185
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   186
	 * data above this line is exported / imported
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   187
	 * To maintain upward compatibility, the above structures
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   188
	 * can't change, so for version 2, all changes will need
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   189
	 * to be added here and the old format (above) maintained.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   190
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   191
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   192
	uint32_t		as_have_user_data;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   193
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   194
	int			as_kernel_audit_policy;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   195
	int			as_session_model;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   196
	adt_session_flags_t	as_flags;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   197
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   198
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   199
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   200
 * export data format
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   201
 * version number changes when adt_internal_state's export portion
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   202
 * changes.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   203
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   204
#define	PROTOCOL_VERSION 1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   205
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   206
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   207
 * most recent version is at the top; down level consumers are
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   208
 * expected to search down via "prev_offsetX" to a version they
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   209
 * understand.  "v1" is first, "v0" is used to illustrate correct
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   210
 * order for future use.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   211
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   212
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   213
struct adt_export_v1 {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   214
	int32_t		ax_euid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   215
	int32_t		ax_ruid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   216
	int32_t		ax_egid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   217
	int32_t		ax_rgid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   218
	int32_t		ax_auid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   219
	uint32_t	ax_mask_success;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   220
	uint32_t	ax_mask_failure;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   221
	uint32_t	ax_port;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   222
	uint32_t	ax_type;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   223
	uint32_t	ax_addr[4];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   224
	uint32_t	ax_asid;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   225
	int		ax_audit_enabled;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   226
	uint32_t	ax_size_of_tsol_data;	/* zero for non-TSOL systems */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   227
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   228
struct export_link {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   229
	int32_t		ax_version;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   230
	int32_t		ax_offset;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   231
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   232
struct export_header {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   233
	uint32_t		ax_check;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   234
	int32_t			ax_buffer_length;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   235
	struct export_link	ax_link;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   236
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   237
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   238
struct adt_export_data {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   239
	struct export_header	ax_header;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   240
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   241
	struct		adt_export_v1 ax_v1;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   242
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   243
	 * end of version 1 data
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   244
	 * struct export_link	ax_next_A;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   245
	 * data for older version
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   246
	 * struct adt_export_v0 ax_v0;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   247
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   248
	struct export_link	ax_last; /* terminator */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   249
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   250
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   251
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   252
 * struct entry defines rows in tables defined in adt_xlate.c
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   253
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   254
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   255
struct entry {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   256
	char		en_token_id;	/* token id */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   257
	int		en_count_types;	/* # of input fields for this token */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   258
	datadef		*en_type_def;	/* field type and size of each input */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   259
	struct entry	*en_next_token;	/* linked list pointer */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   260
	size_t		en_offset;	/* offset into structure for input */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   261
	int		en_required;	/* if 1, always output a token */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   262
	int		en_tsol;	/* if 1, output only #ifdef TSOL */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   263
	char		*en_msg_format;	/* pointer to sprintf format string */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   264
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   265
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   266
struct translation {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   267
	int		tx_offsetsCalculated;	/* eponymous */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   268
	au_event_t	tx_external_event;	/* event id, external view */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   269
	au_event_t	tx_internal_event;	/* event id, internal view */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   270
	int		tx_entries;		/* array size of entry array */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   271
	struct entry	*tx_first_entry;	/* start of linked list */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   272
	struct entry	*tx_top_entry;		/* first array element */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   273
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   274
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   275
extern struct translation *xlate_table[];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   276
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   277
struct token_jmp {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   278
	long			jmp_id;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   279
	adt_token_func_t	jmp_to;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   280
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   281
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   282
struct msg_text {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   283
	int	ml_min_index;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   284
	int	ml_max_index;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   285
	char	**ml_msg_list;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   286
	int	ml_offset;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   287
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   288
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   289
extern void adt_write_syslog(const char *, int);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   290
extern void adt_token_open(struct adt_event_state *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   291
extern void adt_token_close(struct adt_event_state *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   292
extern void adt_generate_token(struct entry *, void *,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   293
    struct adt_event_state *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   294
extern void *adt_adjust_address(void *, size_t, size_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   295
extern void adt_preload(au_event_t, adt_event_data_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   296
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   297
extern struct msg_text adt_msg_text[];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   298
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   299
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   300
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   301
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   302
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   303
#endif	/* _BSM_XLATE_H */