1 /*
2 * CDDL HEADER START
3 *
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.
7 *
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.
12 *
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]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
24 *
25 * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
26 */
27
28 #ifndef _MLSVC_LOGR_NDL_
29 #define _MLSVC_LOGR_NDL_
30
31 /*
32 ***********************************************************************
33 *
34 * Event log RPC (EVENTLOG) interface definition.
35 *
36 ***********************************************************************
37 */
38
39 #include <libmlrpc/ndrtypes.ndl>
40
41 #define LOGR_OPNUM_EventLogClose 0x02
42 #define LOGR_OPNUM_EventLogQueryCount 0x04
43 #define LOGR_OPNUM_EventLogGetOldestRec 0x05
44 #define LOGR_OPNUM_EventLogOpen 0x07
45 #define LOGR_OPNUM_EventLogRead 0x0A
46
47 #define LOGR_MAXENTRYLEN 800
48
49
50 CONTEXT_HANDLE(logr_handle) logr_handle_t;
51
52 struct logr_string {
53 WORD length;
54 WORD allosize;
55 LPTSTR str;
56 };
57 typedef struct logr_string logr_string_t;
58
59 struct logr_record {
60 DWORD Length1;
61 DWORD Reserved;
62 DWORD RecordNumber;
63 DWORD TimeGenerated;
64 DWORD TimeWritten;
65 DWORD EventID;
66 WORD EventType;
67 WORD NumStrings;
68 WORD EventCategory;
69 WORD ReservedFlags;
70 DWORD ClosingRecordNumber;
71 DWORD StringOffset;
72 DWORD UserSidLength;
73 DWORD UserSidOffset;
74 DWORD DataLength;
75 DWORD DataOffset;
76 BYTE info[LOGR_MAXENTRYLEN];
77 DWORD Length2;
78 };
79 typedef struct logr_record logr_record_t;
80
81 /*
82 ***********************************************************************
83 * LOGR_OPNUM_EventLogClose
84 ***********************************************************************
85 */
86 OPERATION(LOGR_OPNUM_EventLogClose)
87 struct logr_EventLogClose {
88 IN logr_handle_t handle;
89 OUT logr_handle_t result_handle;
90 OUT DWORD status;
91 };
92
93 /*
94 ***********************************************************************
95 * LOGR_OPNUM_EventLogQueryCount
96 ***********************************************************************
97 */
98 OPERATION(LOGR_OPNUM_EventLogQueryCount)
99 struct logr_EventLogQueryCount {
100 IN logr_handle_t handle;
101 OUT DWORD rec_num;
102 OUT DWORD status;
103 };
104
105 /*
106 ***********************************************************************
107 * LOGR_OPNUM_EventLogGetOldestRec
108 ***********************************************************************
109 */
110 OPERATION(LOGR_OPNUM_EventLogGetOldestRec)
111 struct logr_EventLogGetOldestRec {
112 IN logr_handle_t handle;
113 OUT DWORD oldest_rec;
114 OUT DWORD status;
115 };
116
117 /*
118 ***********************************************************************
119 * LOGR_OPNUM_EventLogOpen
120 ***********************************************************************
121 */
122 OPERATION(LOGR_OPNUM_EventLogOpen)
123 struct logr_EventLogOpen {
124 IN DWORD *server_name;
125 IN logr_string_t log_name;
126 IN DWORD reg_module_name;
127 IN DWORD major_version;
128 IN DWORD minor_version;
129 OUT logr_handle_t handle;
130 OUT DWORD status;
131 };
132
133 OPERATION(LOGR_OPNUM_EventLogRead)
134 struct logr_EventLogRead {
135 IN logr_handle_t handle;
136 IN DWORD read_flags;
137 IN DWORD rec_offset;
138 IN DWORD nbytes_to_read;
139 SIZE_IS(nbytes_to_read)
140 OUT REFERENCE LPBYTE buf;
141 OUT DWORD sent_size;
142 OUT DWORD min_bytes_needed;
143 OUT DWORD status;
144 };
145
146 /*
147 ***********************************************************************
148 * The EVENTLOG interface definition.
149 ***********************************************************************
150 */
151 INTERFACE(0)
152 union logr_interface {
153 CASE(LOGR_OPNUM_EventLogClose)
154 struct logr_EventLogClose EventLogClose;
155 CASE(LOGR_OPNUM_EventLogQueryCount)
156 struct logr_EventLogQueryCount EventLogQueryCount;
157 CASE(LOGR_OPNUM_EventLogGetOldestRec)
158 struct logr_EventLogGetOldestRec EventLogGetOldestRec;
159 CASE(LOGR_OPNUM_EventLogOpen)
160 struct logr_EventLogOpen EventLogOpen;
161 CASE(LOGR_OPNUM_EventLogRead)
162 struct logr_EventLogRead EventLogRead;
163 };
164 typedef union logr_interface logr_interface_t;
165 EXTERNTYPEINFO(logr_interface)
166
167 #endif /* _MLSVC_LOGR_NDL_ */