|
|
|
--- a/source3/rpc_server/rpc_ep_setup.c
|
|
|
|
+++ b/source3/rpc_server/rpc_ep_setup.c
|
|
|
|
@@ -606,6 +606,7 @@ static bool samr_init_cb(void *ptr)
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
+#ifdef NETLOGON_SUPPORT
|
|
|
|
static bool netlogon_init_cb(void *ptr)
|
|
|
|
{
|
|
|
|
struct dcesrv_ep_context *ep_ctx =
|
|
|
|
@@ -654,6 +655,7 @@ static bool netlogon_init_cb(void *ptr)
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
+#endif
|
|
|
|
|
|
|
|
static bool spoolss_init_cb(void *ptr)
|
|
|
|
{
|
|
|
|
@@ -1116,12 +1118,15 @@ bool dcesrv_ep_setup(struct tevent_conte
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
+#ifdef NETLOGON_SUPPORT
|
|
|
|
netlogon_cb.init = netlogon_init_cb;
|
|
|
|
netlogon_cb.shutdown = NULL;
|
|
|
|
netlogon_cb.private_data = ep_ctx;
|
|
|
|
if (!NT_STATUS_IS_OK(rpc_netlogon_init(&netlogon_cb))) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
|
|
|
|
rpcsrv_type = lp_parm_const_string(GLOBAL_SECTION_SNUM,
|
|
|
|
"rpc_server",
|
|
|
|
--- a/source3/librpc/rpc/rpc_common.c
|
|
|
|
+++ b/source3/librpc/rpc/rpc_common.c
|
|
|
|
@@ -103,9 +103,11 @@ static bool initialize_interfaces(void)
|
|
|
|
if (!smb_register_ndr_interface(&ndr_table_samr)) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
+#ifdef NETLOGON_SUPPORT
|
|
|
|
if (!smb_register_ndr_interface(&ndr_table_netlogon)) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
+#endif
|
|
|
|
if (!smb_register_ndr_interface(&ndr_table_srvsvc)) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
--- a/source3/smbd/server_exit.c
|
|
|
|
+++ b/source3/smbd/server_exit.c
|
|
|
|
@@ -156,7 +156,9 @@ static void exit_server_common(enum serv
|
|
|
|
rpc_winreg_shutdown();
|
|
|
|
#endif
|
|
|
|
|
|
|
|
+#ifdef NETLOGON_SUPPORT
|
|
|
|
rpc_netlogon_shutdown();
|
|
|
|
+#endif
|
|
|
|
rpc_samr_shutdown();
|
|
|
|
rpc_lsarpc_shutdown();
|
|
|
|
}
|
|
|
|
--- a/source3/rpc_server/svcctl/srv_svcctl_nt.c
|
|
|
|
+++ b/source3/rpc_server/svcctl/srv_svcctl_nt.c
|
|
|
|
@@ -91,9 +91,11 @@ bool init_service_op_table( void )
|
|
|
|
i++;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
+#ifdef NETLOGON_SUPPORT
|
|
|
|
svcctl_ops[i].name = talloc_strdup( svcctl_ops, "NETLOGON" );
|
|
|
|
svcctl_ops[i].ops = &netlogon_svc_ops;
|
|
|
|
i++;
|
|
|
|
+#endif
|
|
|
|
|
|
|
|
#ifdef WINREG_SUPPORT
|
|
|
|
svcctl_ops[i].name = talloc_strdup( svcctl_ops, "RemoteRegistry" );
|
|
|
|
--- a/source3/nmbd/nmbd_processlogon.c
|
|
|
|
+++ b/source3/nmbd/nmbd_processlogon.c
|
|
|
|
@@ -320,6 +320,10 @@ void process_logon_packet(struct packet_
|
|
|
|
NTSTATUS status;
|
|
|
|
const char *pdc_name;
|
|
|
|
|
|
|
|
+#ifndef NETLOGON_SUPPORT
|
|
|
|
+ return;
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
in_addr_to_sockaddr_storage(&ss, p->ip);
|
|
|
|
pss = iface_ip((struct sockaddr *)&ss);
|
|
|
|
if (!pss) {
|
|
|
|
--- a/source3/rpcclient/rpcclient.c
|
|
|
|
+++ b/source3/rpcclient/rpcclient.c
|
|
|
|
@@ -627,7 +627,9 @@ static struct cmd_set *rpcclient_command
|
|
|
|
#ifdef PRINTER_SUPPORT
|
|
|
|
spoolss_commands,
|
|
|
|
#endif
|
|
|
|
+#ifdef NETLOGON_SUPPORT
|
|
|
|
netlogon_commands,
|
|
|
|
+#endif
|
|
|
|
srvsvc_commands,
|
|
|
|
#ifdef DFS_SUPPORT
|
|
|
|
dfs_commands,
|
|
|
|
--- a/source3/rpc_server/wkssvc/srv_wkssvc_nt.c
|
|
|
|
+++ b/source3/rpc_server/wkssvc/srv_wkssvc_nt.c
|
|
|
|
@@ -824,6 +824,10 @@ WERROR _wkssvc_NetrJoinDomain2(struct pi
|
|
|
|
WERROR werr;
|
|
|
|
struct security_token *token = p->session_info->security_token;
|
|
|
|
|
|
|
|
+#ifndef NETLOGON_SUPPORT
|
|
|
|
+ return WERR_NOT_SUPPORTED;
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
if (!r->in.domain_name) {
|
|
|
|
return WERR_INVALID_PARAM;
|
|
|
|
}
|
|
|
|
@@ -901,6 +905,10 @@ WERROR _wkssvc_NetrUnjoinDomain2(struct
|
|
|
|
WERROR werr;
|
|
|
|
struct security_token *token = p->session_info->security_token;
|
|
|
|
|
|
|
|
+#ifndef NETLOGON_SUPPORT
|
|
|
|
+ return WERR_NOT_SUPPORTED;
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
if (!r->in.account || !r->in.encrypted_password) {
|
|
|
|
return WERR_INVALID_PARAM;
|
|
|
|
}
|
|
|
|
--- a/source3/libsmb/trusts_util.c
|
|
|
|
+++ b/source3/libsmb/trusts_util.c
|
|
|
|
@@ -46,9 +46,11 @@ NTSTATUS trust_pw_change_and_store_it(st
|
|
|
|
NTSTATUS nt_status;
|
|
|
|
|
|
|
|
switch (sec_channel_type) {
|
|
|
|
+#ifdef NETLOGON_SUPPORT
|
|
|
|
case SEC_CHAN_WKSTA:
|
|
|
|
case SEC_CHAN_DOMAIN:
|
|
|
|
break;
|
|
|
|
+#endif
|
|
|
|
default:
|
|
|
|
return NT_STATUS_NOT_SUPPORTED;
|
|
|
|
}
|
|
|
|
@@ -159,6 +161,11 @@ bool enumerate_domain_trusts( TALLOC_CTX
|
|
|
|
*num_domains = 0;
|
|
|
|
*sids = NULL;
|
|
|
|
|
|
|
|
+#ifndef NETLOGON_SUPPORT
|
|
|
|
+ return False;
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+
|
|
|
|
/* lookup a DC first */
|
|
|
|
|
|
|
|
if ( !get_dc_name(domain, NULL, dc_name, &dc_ss) ) {
|
|
|
|
@@ -243,6 +250,10 @@ NTSTATUS change_trust_account_password(
|
|
|
|
struct cli_state *cli = NULL;
|
|
|
|
struct rpc_pipe_client *netlogon_pipe = NULL;
|
|
|
|
|
|
|
|
+#ifndef NETLOGON_SUPPORT
|
|
|
|
+ return NT_STATUS_UNSUCCESSFUL;
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
DEBUG(5,("change_trust_account_password: Attempting to change trust account password in domain %s....\n",
|
|
|
|
domain));
|
|
|
|
|
|
|
|
--- a/source3/auth/auth_domain.c
|
|
|
|
+++ b/source3/auth/auth_domain.c
|
|
|
|
@@ -538,7 +538,9 @@ static NTSTATUS auth_init_trustdomain(st
|
|
|
|
|
|
|
|
NTSTATUS auth_domain_init(void)
|
|
|
|
{
|
|
|
|
+#ifdef NETLOGON_SUPPORT
|
|
|
|
smb_register_auth(AUTH_INTERFACE_VERSION, "trustdomain", auth_init_trustdomain);
|
|
|
|
smb_register_auth(AUTH_INTERFACE_VERSION, "ntdomain", auth_init_ntdomain);
|
|
|
|
+#endif
|
|
|
|
return NT_STATUS_OK;
|
|
|
|
}
|
|
|
|
--- a/source3/smbd/process.c
|
|
|
|
+++ b/source3/smbd/process.c
|
|
|
|
@@ -2431,8 +2431,10 @@ static bool housekeeping_fn(const struct
|
|
|
|
/* check if we need to reload services */
|
|
|
|
check_reload(sconn, time_mono(NULL));
|
|
|
|
|
|
|
|
+#ifdef NETLOGON_SUPPORT
|
|
|
|
/* Change machine password if neccessary. */
|
|
|
|
attempt_machine_password_change();
|
|
|
|
+#endif
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Force a log file check.
|