s3-prefork: Listening fds must be in non-blocking mode
[idra/samba.git] / source3 / lib / smbd_shim.h
1 /*
2    Unix SMB/CIFS implementation.
3    RPC pipe client
4
5    Copyright (C) Gerald (Jerry) Carter          2004.
6    Copyright (C) Andrew Bartlett                2011.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3 of the License, or
11    (at your option) any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <http://www.gnu.org/licenses/>.
20 */
21
22 /* 
23    shim functions are used required to allow library code to have
24    references to smbd specific code. The smbd daemon sets up the set
25    of function calls that it wants used by calling
26    set_smbd_shim(). Other executables don't make this call, and get
27    default (dummy) versions of these functions.
28 */
29
30 struct smbd_shim
31 {
32         void (*cancel_pending_lock_requests_by_fid)(files_struct *fsp,
33                                                     struct byte_range_lock *br_lck,
34                                                     enum file_close_type close_type);
35         void (*send_stat_cache_delete_message)(struct messaging_context *msg_ctx,
36                                                const char *name);
37
38         NTSTATUS (*can_delete_directory)(struct connection_struct *conn,
39                                          const char *dirname);
40
41         bool (*change_to_root_user)(void);
42
43         void (*contend_level2_oplocks_begin)(files_struct *fsp,
44                                              enum level2_contention_type type);
45         
46         void (*contend_level2_oplocks_end)(files_struct *fsp,
47                                            enum level2_contention_type type);
48
49         void (*become_root)(void);
50
51         void (*unbecome_root)(void);
52 };
53
54 void set_smbd_shim(const struct smbd_shim *shim_functions);
55
56