Line data Source code
1 : /*
2 : * Unix SMB/CIFS implementation.
3 : *
4 : * This program is free software; you can redistribute it and/or modify
5 : * it under the terms of the GNU General Public License as published by
6 : * the Free Software Foundation; either version 3 of the License, or
7 : * (at your option) any later version.
8 : *
9 : * This program is distributed in the hope that it will be useful,
10 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 : * GNU General Public License for more details.
13 : *
14 : * You should have received a copy of the GNU General Public License
15 : * along with this program; if not, see <http://www.gnu.org/licenses/>.
16 : */
17 :
18 : #include "replace.h"
19 : #include "rpc_worker.h"
20 : #include "librpc/gen_ndr/ndr_epmapper.h"
21 : #include "librpc/gen_ndr/ndr_epmapper_scompat.h"
22 : #include "param/loadparm.h"
23 : #include "libds/common/roles.h"
24 :
25 35 : static size_t epmapper_interfaces(
26 : const struct ndr_interface_table ***pifaces,
27 : void *private_data)
28 : {
29 : static const struct ndr_interface_table *ifaces[] = {
30 : &ndr_table_epmapper,
31 : };
32 35 : size_t num_ifaces = ARRAY_SIZE(ifaces);
33 :
34 35 : switch(lp_server_role()) {
35 4 : case ROLE_ACTIVE_DIRECTORY_DC:
36 : /*
37 : * On the AD DC epmapper is provided by the 'samba'
38 : * binary from source4/
39 : */
40 4 : num_ifaces = 0;
41 4 : break;
42 31 : default:
43 31 : break;
44 : }
45 :
46 35 : *pifaces = ifaces;
47 35 : return num_ifaces;
48 : }
49 :
50 10 : static size_t epmapper_servers(
51 : struct dcesrv_context *dce_ctx,
52 : const struct dcesrv_endpoint_server ***_ep_servers,
53 : void *private_data)
54 : {
55 : static const struct dcesrv_endpoint_server *ep_servers[] = { NULL };
56 10 : size_t num_servers = ARRAY_SIZE(ep_servers);
57 :
58 10 : ep_servers[0] = epmapper_get_ep_server();
59 :
60 10 : switch(lp_server_role()) {
61 0 : case ROLE_ACTIVE_DIRECTORY_DC:
62 : /*
63 : * On the AD DC epmapper is provided by the 'samba'
64 : * binary from source4/
65 : */
66 0 : num_servers = 0;
67 0 : break;
68 10 : default:
69 10 : break;
70 : }
71 :
72 10 : *_ep_servers = ep_servers;
73 10 : return num_servers;
74 : }
75 :
76 45 : int main(int argc, const char *argv[])
77 : {
78 45 : return rpc_worker_main(
79 : argc,
80 : argv,
81 : "rpcd_epmapper",
82 : 1,
83 : 10,
84 : epmapper_interfaces,
85 : epmapper_servers,
86 : NULL);
87 : }
|