4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
22 * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
27 #ifndef _AUDIT_REMOTE_H
28 #define _AUDIT_REMOTE_H
36 #include <security/auditd.h>
38 /* gettext() obfuscation routine for lint */
44 /* send_record() return code */
51 typedef enum send_record_rc send_record_rc_t
;
53 /* closing helpers - the reason of connection closure */
55 RSN_UNDEFINED
, /* reason not defined */
56 RSN_INIT_POLL
, /* poll() initialization failed */
57 RSN_TOK_RECV_FAILED
, /* token receiving failed */
58 RSN_TOK_TOO_BIG
, /* unacceptable token size */
59 RSN_TOK_UNVERIFIABLE
, /* received unverifiable token */
60 RSN_SOCKET_CLOSE
, /* socket closure */
61 RSN_SOCKET_CREATE
, /* socket creation */
62 RSN_CONNECTION_CREATE
, /* connection creation */
63 RSN_PROTOCOL_NEGOTIATE
, /* protocol version negotiation */
64 RSN_GSS_CTX_ESTABLISH
, /* establish GSS-API context */
65 RSN_GSS_CTX_EXP
, /* expiration of the GSS-API context */
66 RSN_UNKNOWN_AF
, /* unknown address family */
67 RSN_MEMORY_ALLOCATE
, /* memory allocation failure */
68 RSN_OTHER_ERR
/* other, not classified error */
70 typedef enum close_rsn_e close_rsn_t
;
72 /* linked list of remote audit hosts (servers) */
73 typedef struct hostlist_s hostlist_t
;
75 hostlist_t
*next_host
;
77 in_port_t port
; /* TCP port number */
78 gss_OID mech
; /* GSS mechanism - see mech(4) */
81 /* transq_t - single, already sent token in the transmit queue. */
82 struct transq_node_s
{
83 struct transq_node_s
*next
;
84 struct transq_node_s
*prev
;
85 gss_buffer_desc seq_token
; /* seq num || plain token */
86 uint64_t seq_num
; /* seq number */
88 typedef struct transq_node_s transq_node_t
;
90 /* transq_hdr_t - the transmit queue header structure */
92 struct transq_node_s
*head
;
93 struct transq_node_s
*end
;
94 long count
; /* amount of nodes in the queue */
96 typedef struct transq_hdr_s transq_hdr_t
;
98 /* pipe_msg_s - the notification pipe message */
100 int sock_num
; /* socket fd to be poll()ed and more */
101 boolean_t sync
; /* call the sync routines */
103 typedef struct pipe_msg_s pipe_msg_t
;
107 * Cross audit_remote plugin source code shared functions and bool parameters.
109 * reset_transport() helpers:
110 * arg1) DO_SYNC, DO_NOT_SYNC
111 * arg2) DO_EXIT, DO_CLOSE, DO_NOT_EXIT, DO_NOT_CLOSE
113 #define DO_SYNC B_TRUE
114 #define DO_NOT_SYNC B_FALSE
115 #define DO_EXIT B_FALSE
116 #define DO_CLOSE B_TRUE
117 #define DO_NOT_EXIT B_CLOSE
118 #define DO_NOT_CLOSE B_EXIT
119 extern void reset_transport(boolean_t
, boolean_t
);
120 extern send_record_rc_t
send_record(struct hostlist_s
*, const char *, size_t,
121 uint64_t, close_rsn_t
*);
124 #define DPRINT(x) { (void) fprintf x; (void) fflush(dfile); }
138 #endif /* _AUDIT_REMOTE_H */