s3-eventlog: remove fixup_eventlog_entry.
[kai/samba-autobuild/.git] / source3 / rpc_server / srv_eventlog.c
1 /* 
2  *  Unix SMB/CIFS implementation.
3  *  RPC Pipe client / server routines
4  *  Copyright (C) Marcin Krzysztof Porwit         2005.
5  *  Copyright (C) Gerald Carter                   2005 - 2007
6  *  
7  *  This program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License as published by
9  *  the Free Software Foundation; either version 3 of the License, or
10  *  (at your option) any later version.
11  *  
12  *  This program is distributed in the hope that it will be useful,
13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  *  GNU General Public License for more details.
16  *  
17  *  You should have received a copy of the GNU General Public License
18  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
19  */
20  
21 #include "includes.h"
22 #include "librpc/gen_ndr/srv_eventlog.h"
23
24 #undef DBGC_CLASS
25 #define DBGC_CLASS DBGC_RPC_SRV
26
27 static bool proxy_eventlog_call(pipes_struct *p, uint8 opnum)
28 {
29         struct api_struct *fns;
30         int n_fns;
31
32         eventlog_get_pipe_fns(&fns, &n_fns);
33
34         if (opnum >= n_fns)
35                 return False;
36
37         if (fns[opnum].opnum != opnum) {
38                 smb_panic("EVENTLOG function table not sorted\n");
39         }
40
41         return fns[opnum].fn(p);
42 }
43
44 static bool api_eventlog_open_eventlog(pipes_struct *p)
45 {
46         return proxy_eventlog_call(p, NDR_EVENTLOG_OPENEVENTLOGW);
47 }
48
49 static bool api_eventlog_close_eventlog(pipes_struct *p)
50 {
51         return proxy_eventlog_call( p, NDR_EVENTLOG_CLOSEEVENTLOG );    
52 }
53
54 static bool api_eventlog_get_num_records(pipes_struct *p)
55 {
56         return proxy_eventlog_call(p, NDR_EVENTLOG_GETNUMRECORDS);
57 }
58
59 static bool api_eventlog_get_oldest_entry(pipes_struct *p)
60 {
61         return proxy_eventlog_call(p, NDR_EVENTLOG_GETOLDESTRECORD);
62 }
63
64 static bool api_eventlog_read_eventlog(pipes_struct *p)
65 {
66         return proxy_eventlog_call(p, NDR_EVENTLOG_READEVENTLOGW);
67 }
68
69 static bool api_eventlog_clear_eventlog(pipes_struct *p)
70 {
71         return proxy_eventlog_call(p, NDR_EVENTLOG_CLEAREVENTLOGW);
72 }
73
74 /*
75  \pipe\eventlog commands
76 */
77 struct api_struct api_eventlog_cmds[] =
78 {
79         {"EVENTLOG_OPENEVENTLOG",       EVENTLOG_OPENEVENTLOG,          api_eventlog_open_eventlog    },
80         {"EVENTLOG_CLOSEEVENTLOG",      EVENTLOG_CLOSEEVENTLOG,         api_eventlog_close_eventlog   },
81         {"EVENTLOG_GETNUMRECORDS",      EVENTLOG_GETNUMRECORDS,         api_eventlog_get_num_records  },
82         {"EVENTLOG_GETOLDESTENTRY",     EVENTLOG_GETOLDESTENTRY,        api_eventlog_get_oldest_entry },
83         {"EVENTLOG_READEVENTLOG",       EVENTLOG_READEVENTLOG,          api_eventlog_read_eventlog    },
84         {"EVENTLOG_CLEAREVENTLOG",      EVENTLOG_CLEAREVENTLOG,         api_eventlog_clear_eventlog   }
85 };
86
87 NTSTATUS rpc_eventlog2_init(void)
88 {
89         return rpc_srv_register(SMB_RPC_INTERFACE_VERSION,
90                 "eventlog", "eventlog", &ndr_table_eventlog,
91                 api_eventlog_cmds,
92                 sizeof(api_eventlog_cmds)/sizeof(struct api_struct));
93 }
94
95 void eventlog2_get_pipe_fns(struct api_struct **fns, int *n_fns)
96 {
97         *fns = api_eventlog_cmds;
98         *n_fns = sizeof(api_eventlog_cmds) / sizeof(struct api_struct);
99 }