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 "includes.h" 19 : #include "rpc_worker.h" 20 : #include "librpc/gen_ndr/ndr_winreg.h" 21 : #include "librpc/gen_ndr/ndr_winreg_scompat.h" 22 : #include "source3/registry/reg_init_full.h" 23 : 24 101 : static size_t winreg_interfaces( 25 : const struct ndr_interface_table ***pifaces, 26 : void *private_data) 27 : { 28 : static const struct ndr_interface_table *ifaces[] = { 29 : &ndr_table_winreg, 30 : }; 31 101 : *pifaces = ifaces; 32 101 : return ARRAY_SIZE(ifaces); 33 : } 34 : 35 186 : static NTSTATUS winreg_servers( 36 : struct dcesrv_context *dce_ctx, 37 : const struct dcesrv_endpoint_server ***_ep_servers, 38 : size_t *_num_ep_servers, 39 : void *private_data) 40 : { 41 : static const struct dcesrv_endpoint_server *ep_servers[1] = { NULL }; 42 : WERROR werr; 43 : 44 186 : ep_servers[0] = winreg_get_ep_server(); 45 : 46 186 : werr = registry_init_full(); 47 186 : if (!W_ERROR_IS_OK(werr)) { 48 0 : DBG_ERR("registry_init_full() failed: %s\n", 49 : win_errstr(werr)); 50 0 : return werror_to_ntstatus(werr); 51 : } 52 : 53 186 : lp_load_with_shares(get_dyn_CONFIGFILE()); 54 : 55 186 : *_ep_servers = ep_servers; 56 186 : *_num_ep_servers = ARRAY_SIZE(ep_servers); 57 186 : return NT_STATUS_OK; 58 : } 59 : 60 287 : int main(int argc, const char *argv[]) 61 : { 62 287 : return rpc_worker_main( 63 : argc, 64 : argv, 65 : "rpcd_winreg", 66 : 5, 67 : 60, 68 : winreg_interfaces, 69 : winreg_servers, 70 : NULL); 71 : }