Line data Source code
1 : /* 2 : * Unix SMB/CIFS implementation. 3 : * Service Control API Implementation 4 : * Copyright (C) Gerald Carter 2005. 5 : * 6 : * This program is free software; you can redistribute it and/or modify 7 : * it under the terms of the GNU General Public License as published by 8 : * the Free Software Foundation; either version 3 of the License, or 9 : * (at your option) any later version. 10 : * 11 : * This program is distributed in the hope that it will be useful, 12 : * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 : * GNU General Public License for more details. 15 : * 16 : * You should have received a copy of the GNU General Public License 17 : * along with this program; if not, see <http://www.gnu.org/licenses/>. 18 : */ 19 : 20 : #include "includes.h" 21 : #include "services/services.h" 22 : 23 : /* Implementation for internal netlogon service */ 24 : 25 : /********************************************************************* 26 : *********************************************************************/ 27 : 28 8 : static WERROR netlogon_status( const char *service, struct SERVICE_STATUS *service_status ) 29 : { 30 8 : ZERO_STRUCTP( service_status ); 31 : 32 8 : service_status->type = SERVICE_TYPE_WIN32_SHARE_PROCESS; 33 8 : service_status->controls_accepted = SVCCTL_ACCEPT_NONE; 34 : 35 8 : if ( lp_servicenumber("NETLOGON") != -1 ) { 36 4 : service_status->state = SVCCTL_RUNNING; 37 4 : service_status->win32_exit_code = WERR_SERVICE_NEVER_STARTED; 38 : } 39 : else 40 4 : service_status->state = SVCCTL_STOPPED; 41 : 42 8 : return WERR_OK; 43 : } 44 : 45 : /********************************************************************* 46 : *********************************************************************/ 47 : 48 0 : static WERROR netlogon_stop( const char *service, struct SERVICE_STATUS *service_status ) 49 : { 50 0 : netlogon_status( service, service_status ); 51 : 52 0 : return WERR_ACCESS_DENIED; 53 : } 54 : 55 : /********************************************************************* 56 : *********************************************************************/ 57 : 58 0 : static WERROR netlogon_start( const char *service ) 59 : { 60 0 : if ( lp_servicenumber("NETLOGON") == -1 ) 61 0 : return WERR_SERVICE_DISABLED; 62 : 63 0 : return WERR_ACCESS_DENIED; 64 : } 65 : 66 : /********************************************************************* 67 : *********************************************************************/ 68 : 69 : /* struct for svcctl control to manipulate netlogon service */ 70 : 71 : SERVICE_CONTROL_OPS netlogon_svc_ops = { 72 : netlogon_stop, 73 : netlogon_start, 74 : netlogon_status 75 : };