summaryrefslogtreecommitdiff
path: root/source3/librpc/gen_ndr
diff options
context:
space:
mode:
authorJim McDonough <jmcd@samba.org>2009-06-19 13:46:07 -0400
committerJim McDonough <jmcd@samba.org>2009-06-19 13:46:07 -0400
commit7930f15f5dce0dd72b354f903a758b03988371b8 (patch)
treeb3405ea2ccb64b92fad2854cecb5698c517d2fe1 /source3/librpc/gen_ndr
parent0524d24fb217813e4939b299b1fabe9a54b4216e (diff)
downloadsamba-7930f15f5dce0dd72b354f903a758b03988371b8.tar.gz
samba-7930f15f5dce0dd72b354f903a758b03988371b8.tar.bz2
samba-7930f15f5dce0dd72b354f903a758b03988371b8.zip
Don't require "Modify property" perms to unjoin bug #6481)
"net ads leave" stopped working when "modify properties" permissions were not granted (meaning you had to be allowed to disable the account that you were about to delete). Libnetapi should not delete machine accounts, as this does not happen on win32. The WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE flag really means "disable" (both in practice and docs). However, to keep the functionality in "net ads leave", we will still try to do the delete. If this fails, we try to do the disable. Additionally, it is possible in windows to not disable or delete the account, but just tell the local machine that it is no longer in the account. libnet can now do this as well.
Diffstat (limited to 'source3/librpc/gen_ndr')
-rw-r--r--source3/librpc/gen_ndr/libnet_join.h5
-rw-r--r--source3/librpc/gen_ndr/ndr_libnet_join.c1
2 files changed, 4 insertions, 2 deletions
diff --git a/source3/librpc/gen_ndr/libnet_join.h b/source3/librpc/gen_ndr/libnet_join.h
index ed49062a78..cf915cbf18 100644
--- a/source3/librpc/gen_ndr/libnet_join.h
+++ b/source3/librpc/gen_ndr/libnet_join.h
@@ -2,13 +2,13 @@
#include <stdint.h>
+#include "libcli/util/ntstatus.h"
+
#include "librpc/gen_ndr/wkssvc.h"
#include "librpc/gen_ndr/security.h"
#ifndef _HEADER_libnetjoin
#define _HEADER_libnetjoin
-enum netr_SchannelType;
-
struct libnet_JoinCtx {
struct {
@@ -58,6 +58,7 @@ struct libnet_UnjoinCtx {
const char * admin_password;
const char * machine_password;
uint32_t unjoin_flags;
+ uint8_t delete_machine_account;
uint8_t modify_config;
struct dom_sid *domain_sid;/* [ref] */
struct ads_struct *ads;/* [ref] */
diff --git a/source3/librpc/gen_ndr/ndr_libnet_join.c b/source3/librpc/gen_ndr/ndr_libnet_join.c
index 79fcd16a90..ba31ea6365 100644
--- a/source3/librpc/gen_ndr/ndr_libnet_join.c
+++ b/source3/librpc/gen_ndr/ndr_libnet_join.c
@@ -89,6 +89,7 @@ _PUBLIC_ void ndr_print_libnet_UnjoinCtx(struct ndr_print *ndr, const char *name
ndr_print_ptr(ndr, "machine_password", r->in.machine_password);
#endif
ndr_print_wkssvc_joinflags(ndr, "unjoin_flags", r->in.unjoin_flags);
+ ndr_print_uint8(ndr, "delete_machine_account", r->in.delete_machine_account);
ndr_print_uint8(ndr, "modify_config", r->in.modify_config);
ndr_print_ptr(ndr, "domain_sid", r->in.domain_sid);
ndr->depth++;