8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / lib / auditd_plugins / remote / audit_remote.h
blob69e27c98a0c642b7678ffedf35c6ef9b147ad4c8
1 /*
2 * CDDL HEADER START
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]
19 * CDDL HEADER END
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
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
35 #include <stdio.h>
36 #include <security/auditd.h>
38 /* gettext() obfuscation routine for lint */
39 #ifdef __lint
40 #define gettext(x) x
41 #endif
44 /* send_record() return code */
45 enum send_record_rc {
46 SEND_RECORD_SUCCESS,
47 SEND_RECORD_NEXT,
48 SEND_RECORD_RETRY,
49 SEND_RECORD_FAIL
51 typedef enum send_record_rc send_record_rc_t;
53 /* closing helpers - the reason of connection closure */
54 enum close_rsn_e {
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;
74 struct hostlist_s {
75 hostlist_t *next_host;
76 struct hostent *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 */
91 struct transq_hdr_s {
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 */
99 struct pipe_msg_s {
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 *);
123 #if DEBUG
124 #define DPRINT(x) { (void) fprintf x; (void) fflush(dfile); }
125 #else
126 #define DPRINT(x)
127 #endif
129 #if DEBUG
130 extern FILE *dfile;
131 #endif
134 #ifdef __cplusplus
136 #endif
138 #endif /* _AUDIT_REMOTE_H */