2 * Unix SMB/Netbios implementation.
4 * RPC Pipe client / server routines
5 * Copyright (C) Andrew Tridgell 1992-1999,
6 * Copyright (C) Luke Kenneth Casson Leighton 1996-1999,
7 * Copyright (C) Jean François Micouleau 1998-1999.
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 #include "rpc_parse.h"
27 extern int DEBUGLEVEL
;
29 /*******************************************************************
30 ********************************************************************/
31 BOOL
make_eventlog_q_open(EVENTLOG_Q_OPEN
*q_u
, const char *journal
, char *unk
)
33 int len_journal
= journal
!= NULL
? strlen(journal
) : 0;
34 int len_unk
= unk
!= NULL
? strlen(unk
) : 0;
40 make_uni_hdr(&(q_u
->hdr_source
), len_journal
);
41 make_unistr2(&(q_u
->uni_source
), journal
, len_journal
);
43 make_uni_hdr(&(q_u
->hdr_unk
), len_unk
);
44 make_unistr2(&(q_u
->uni_unk
), unk
, len_unk
);
46 q_u
->unk6
=0x01; /* one of these is an access mask! */
47 q_u
->unk7
=0x01; /* one of these is an access mask! */
52 /*******************************************************************
53 ********************************************************************/
54 BOOL
eventlog_io_q_open(char *desc
, EVENTLOG_Q_OPEN
*q_u
, prs_struct
*ps
, int depth
)
56 prs_debug(ps
, depth
, desc
, "eventlog_io_q_open");
61 prs_uint32("ptr0", ps
, depth
, &(q_u
->ptr0
));
63 prs_uint16("unk0", ps
, depth
, &(q_u
->unk0
));
64 prs_uint16("unk1", ps
, depth
, &(q_u
->unk1
));
66 smb_io_unihdr("hdr_source", &(q_u
->hdr_source
), ps
, depth
);
67 smb_io_unistr2("uni_source", &(q_u
->uni_source
),
68 q_u
->hdr_source
.buffer
, ps
, depth
);
71 smb_io_unihdr("hdr_unk", &(q_u
->hdr_unk
), ps
, depth
);
72 smb_io_unistr2("uni_unk", &(q_u
->uni_unk
),
73 q_u
->hdr_unk
.buffer
, ps
, depth
);
76 prs_uint32("unk6", ps
, depth
, &(q_u
->unk6
));
77 prs_uint32("unk7", ps
, depth
, &(q_u
->unk7
));
82 /*******************************************************************
83 ********************************************************************/
84 BOOL
eventlog_io_r_open(char *desc
, EVENTLOG_R_OPEN
*r_u
, prs_struct
*ps
, int depth
)
86 prs_debug(ps
, depth
, desc
, "eventlog_io_r_open");
90 smb_io_pol_hnd("", &(r_u
->pol
), ps
, depth
);
91 prs_uint32("status", ps
, depth
, &(r_u
->status
));
96 /*******************************************************************
97 ********************************************************************/
98 BOOL
make_eventlog_q_close(EVENTLOG_Q_CLOSE
*q_u
, POLICY_HND
*pol
)
100 if ((q_u
== NULL
) || (pol
== NULL
))
110 /*******************************************************************
111 ********************************************************************/
112 BOOL
eventlog_io_q_close(char *desc
, EVENTLOG_Q_CLOSE
*q_u
, prs_struct
*ps
, int depth
)
114 prs_debug(ps
, depth
, desc
, "eventlog_io_q_close");
118 smb_io_pol_hnd("", &(q_u
->pol
), ps
, depth
);
123 /*******************************************************************
124 ********************************************************************/
125 BOOL
eventlog_io_r_close(char *desc
, EVENTLOG_R_CLOSE
*r_u
, prs_struct
*ps
, int depth
)
127 prs_debug(ps
, depth
, desc
, "eventlog_io_r_close");
131 smb_io_pol_hnd("", &(r_u
->pol
), ps
, depth
);
132 prs_uint32("status", ps
, depth
, &(r_u
->status
));
137 /*******************************************************************
138 ********************************************************************/
139 BOOL
make_eventlog_q_numofeventlogrec(EVENTLOG_Q_NUMOFEVENTLOGREC
*q_u
, POLICY_HND
*pol
)
141 if ((q_u
== NULL
) || (pol
== NULL
))
151 /*******************************************************************
152 ********************************************************************/
153 BOOL
eventlog_io_q_numofeventlogrec(char *desc
,EVENTLOG_Q_NUMOFEVENTLOGREC
*q_u
, prs_struct
*ps
, int depth
)
155 prs_debug(ps
, depth
, desc
, "eventlog_io_q_numofeventlogrec");
159 smb_io_pol_hnd("", &(q_u
->pol
), ps
, depth
);
164 /*******************************************************************
165 ********************************************************************/
166 BOOL
eventlog_io_r_numofeventlogrec(char *desc
, EVENTLOG_R_NUMOFEVENTLOGREC
*r_u
, prs_struct
*ps
, int depth
)
168 prs_debug(ps
, depth
, desc
, "eventlog_io_r_numofeventlogrec");
172 prs_uint32("number", ps
, depth
, &(r_u
->number
));
173 prs_uint32("status", ps
, depth
, &(r_u
->status
));
178 /*******************************************************************
179 ********************************************************************/
180 BOOL
make_eventlog_q_readeventlog(EVENTLOG_Q_READEVENTLOG
*q_u
, POLICY_HND
*pol
,
181 uint32 flags
, uint32 offset
, uint32 number_of_bytes
)
183 if ((q_u
== NULL
) || (pol
== NULL
))
190 q_u
->offset
= offset
;
191 q_u
->number_of_bytes
= number_of_bytes
;
196 /*******************************************************************
197 ********************************************************************/
198 BOOL
eventlog_io_q_readeventlog(char *desc
, EVENTLOG_Q_READEVENTLOG
*q_u
, prs_struct
*ps
, int depth
)
200 prs_debug(ps
, depth
, desc
, "eventlog_io_q_readeventlog");
204 smb_io_pol_hnd("", &(q_u
->pol
), ps
, depth
);
205 prs_uint32("flags", ps
, depth
, &(q_u
->flags
));
206 prs_uint32("offset", ps
, depth
, &(q_u
->offset
));
207 prs_uint32("number_of_bytes", ps
, depth
, &(q_u
->number_of_bytes
));
212 /*******************************************************************
213 ********************************************************************/
214 static BOOL
eventlog_io_eventlog(char *desc
, EVENTLOGRECORD
*ev
, prs_struct
*ps
, int depth
)
216 prs_debug(ps
, depth
, desc
, "eventlog_io_eventlog");
220 prs_uint32("size", ps
, depth
, &(ev
->size
));
221 prs_uint32("reserved", ps
, depth
, &(ev
->reserved
));
222 prs_uint32("recordnumber", ps
, depth
, &(ev
->recordnumber
));
223 prs_uint32("creationtime", ps
, depth
, &(ev
->creationtime
));
224 prs_uint32("writetime", ps
, depth
, &(ev
->writetime
));
225 prs_uint32("eventnumber", ps
, depth
, &(ev
->eventnumber
));
227 prs_uint16("eventtype", ps
, depth
, &(ev
->eventtype
));
228 prs_uint16("num_of_strings", ps
, depth
, &(ev
->num_of_strings
));
229 prs_uint16("category", ps
, depth
, &(ev
->category
));
230 prs_uint16("reserved_flag", ps
, depth
, &(ev
->reserved_flag
));
232 prs_uint32("closingrecord", ps
, depth
, &(ev
->closingrecord
));
233 prs_uint32("stringoffset", ps
, depth
, &(ev
->stringoffset
));
234 prs_uint32("sid_length", ps
, depth
, &(ev
->sid_length
));
235 prs_uint32("sid_offset", ps
, depth
, &(ev
->sid_offset
));
236 prs_uint32("data_length", ps
, depth
, &(ev
->data_length
));
237 prs_uint32("data_offset", ps
, depth
, &(ev
->data_offset
));
239 smb_io_unistr("", &(ev
->sourcename
), ps
, depth
);
240 smb_io_unistr("", &(ev
->computername
), ps
, depth
);
242 if (ev
->sid_length
!=0)
243 smb_io_unistr("", &(ev
->sid
), ps
, depth
);
245 if (ev
->num_of_strings
!=0)
246 smb_io_unistr("", &(ev
->strings
),ps
, depth
);
249 smb_io_unistr("", &(ev
->data
), ps
, depth
);
251 prs_uint32("size2", ps
, depth
, &(ev
->size2
));
256 /*******************************************************************
257 ********************************************************************/
258 BOOL
eventlog_io_r_readeventlog(char *desc
, EVENTLOG_R_READEVENTLOG
*r_u
, prs_struct
*ps
, int depth
)
260 prs_debug(ps
, depth
, desc
, "eventlog_io_r_readeventlog");
264 prs_uint32("number_of_bytes", ps
, depth
, &(r_u
->number_of_bytes
));
266 if (r_u
->number_of_bytes
!= 0)
267 eventlog_io_eventlog("", r_u
->event
, ps
, depth
);
269 prs_uint32("sent_size", ps
, depth
, &(r_u
->sent_size
));
270 prs_uint32("real_size", ps
, depth
, &(r_u
->real_size
));
271 prs_uint32("status", ps
, depth
, &(r_u
->status
));