summaryrefslogtreecommitdiff
path: root/source/services
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2005-12-11 04:21:34 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:05:47 -0500
commitc0f54eeebc84ec9fab63c5b105511762bcc136be (patch)
tree63168cc29d033cd74b09753ffb5c3c652389e2a1 /source/services
parent8b30cf8e09944cd97e4ab959f730bf81591c2541 (diff)
downloadsamba-c0f54eeebc84ec9fab63c5b105511762bcc136be.tar.gz
r12173: doing some service control work
* Add a few new error codes for disabled services * dump some more details about service status in 'net rpc service' * disable the WINS and NetLogon services if not configured in smb.conf Still trying to figure out how to disable the start button on the NetLogon and WINS services.
Diffstat (limited to 'source/services')
-rw-r--r--source/services/svc_netlogon.c33
-rw-r--r--source/services/svc_wins.c32
2 files changed, 40 insertions, 25 deletions
diff --git a/source/services/svc_netlogon.c b/source/services/svc_netlogon.c
index 2aa5a31cde3..1bbef325ac3 100644
--- a/source/services/svc_netlogon.c
+++ b/source/services/svc_netlogon.c
@@ -25,33 +25,42 @@
/*********************************************************************
*********************************************************************/
-static WERROR netlogon_stop( const char *service, SERVICE_STATUS *service_status )
+static WERROR netlogon_status( const char *service, SERVICE_STATUS *service_status )
{
- return WERR_ACCESS_DENIED;
+ ZERO_STRUCTP( service_status );
+
+ service_status->type = 0x20;
+ service_status->controls_accepted = SVCCTL_ACCEPT_NONE;
+
+ if ( lp_servicenumber("NETLOGON") != -1 ) {
+ service_status->state = SVCCTL_RUNNING;
+ service_status->win32_exit_code = WERR_SERVICE_NEVER_STARTED;
+ }
+ else
+ service_status->state = SVCCTL_STOPPED;
+
+ return WERR_OK;
}
/*********************************************************************
*********************************************************************/
-static WERROR netlogon_start( const char *service )
+static WERROR netlogon_stop( const char *service, SERVICE_STATUS *service_status )
{
+ netlogon_status( service, service_status );
+
return WERR_ACCESS_DENIED;
}
/*********************************************************************
*********************************************************************/
-static WERROR netlogon_status( const char *service, SERVICE_STATUS *service_status )
+static WERROR netlogon_start( const char *service )
{
- ZERO_STRUCTP( service_status );
+ if ( lp_servicenumber("NETLOGON") == -1 )
+ return WERR_SERVICE_DISABLED;
- service_status->type = 0x20;
- if ( lp_servicenumber("NETLOGON") != -1 )
- service_status->state = SVCCTL_RUNNING;
- else
- service_status->state = SVCCTL_STOPPED;
-
- return WERR_OK;
+ return WERR_ACCESS_DENIED;
}
/*********************************************************************
diff --git a/source/services/svc_wins.c b/source/services/svc_wins.c
index 3a4650664df..37cfc99c06e 100644
--- a/source/services/svc_wins.c
+++ b/source/services/svc_wins.c
@@ -25,33 +25,39 @@
/*********************************************************************
*********************************************************************/
-static WERROR wins_stop( const char *service, SERVICE_STATUS *service_status )
+static WERROR wins_status( const char *service, SERVICE_STATUS *service_status )
{
- return WERR_ACCESS_DENIED;
+ ZERO_STRUCTP( service_status );
+
+ service_status->type = 0x10;
+ service_status->controls_accepted = SVCCTL_ACCEPT_NONE;
+
+ if ( lp_wins_support() )
+ service_status->state = SVCCTL_RUNNING;
+ else {
+ service_status->state = SVCCTL_STOPPED;
+ service_status->win32_exit_code = WERR_SERVICE_NEVER_STARTED;
+ }
+
+ return WERR_OK;
}
/*********************************************************************
*********************************************************************/
-static WERROR wins_start( const char *service )
+static WERROR wins_stop( const char *service, SERVICE_STATUS *service_status )
{
+ wins_status( service, service_status );
+
return WERR_ACCESS_DENIED;
}
/*********************************************************************
*********************************************************************/
-static WERROR wins_status( const char *service, SERVICE_STATUS *service_status )
+static WERROR wins_start( const char *service )
{
- ZERO_STRUCTP( service_status );
-
- service_status->type = 0x10;
- if ( lp_wins_support() )
- service_status->state = SVCCTL_RUNNING;
- else
- service_status->state = SVCCTL_STOPPED;
-
- return WERR_OK;
+ return WERR_ACCESS_DENIED;
}
/*********************************************************************