summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2014-04-28 21:07:59 +1200
committerAndrew Bartlett <abartlet@samba.org>2014-06-04 03:22:26 +0200
commit5a71f46f46fc3d4cbc2fe6c06e0d1661ccead488 (patch)
tree1172b2b7d4a9a299c5e3e1d667344bc839031e98
parent902f14c084a53e5e0b36ed9b214251c8b78b19f3 (diff)
downloadsamba-5a71f46f46fc3d4cbc2fe6c06e0d1661ccead488.tar.gz
samba-5a71f46f46fc3d4cbc2fe6c06e0d1661ccead488.tar.xz
samba-5a71f46f46fc3d4cbc2fe6c06e0d1661ccead488.zip
winbindd: Use rpc_pipe_open_interface() so that winbindd uses the correct rpc servers
This means that in the AD DC, we use the AD DC servers, while in the classic DC or file server we continue to use the built-in SAMR and LSA servers. Andrew Bartlett Change-Id: I63b1443f5665016f7fcbed35907ec29d4424ab18 Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org>
-rw-r--r--source3/param/loadparm.c2
-rw-r--r--source3/winbindd/winbindd_samr.c43
2 files changed, 33 insertions, 12 deletions
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 2ba2037a629..74be8859232 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -4105,6 +4105,8 @@ static bool lp_load_ex(const char *pszFname,
if (lp_server_role() == ROLE_ACTIVE_DIRECTORY_DC) {
lp_do_parameter(-1, "passdb backend", "samba_dsdb");
+ lp_do_parameter(-1, "winbindd:use external pipes", "true");
+
lp_do_parameter(-1, "rpc_server:default", "external");
lp_do_parameter(-1, "rpc_server:svcctl", "embedded");
lp_do_parameter(-1, "rpc_server:srvsvc", "embedded");
diff --git a/source3/winbindd/winbindd_samr.c b/source3/winbindd/winbindd_samr.c
index 78843d62a46..8a717008086 100644
--- a/source3/winbindd/winbindd_samr.c
+++ b/source3/winbindd/winbindd_samr.c
@@ -54,12 +54,22 @@ static NTSTATUS open_internal_samr_pipe(TALLOC_CTX *mem_ctx,
}
/* create a samr connection */
- status = rpc_pipe_open_internal(mem_ctx,
- &ndr_table_samr.syntax_id,
- session_info,
- NULL,
- winbind_messaging_context(),
- &cli);
+ if (lp_parm_bool(-1, "winbindd", "use external pipes", false)) {
+ status = rpc_pipe_open_interface(mem_ctx,
+ &ndr_table_samr,
+ session_info,
+ NULL,
+ winbind_messaging_context(),
+ &cli);
+ } else {
+ status = rpc_pipe_open_internal(mem_ctx,
+ &ndr_table_samr.syntax_id,
+ session_info,
+ NULL,
+ winbind_messaging_context(),
+ &cli);
+ }
+
if (!NT_STATUS_IS_OK(status)) {
DEBUG(0, ("open_samr_pipe: Could not connect to samr_pipe: %s\n",
nt_errstr(status)));
@@ -129,12 +139,21 @@ static NTSTATUS open_internal_lsa_pipe(TALLOC_CTX *mem_ctx,
}
/* create a lsa connection */
- status = rpc_pipe_open_internal(mem_ctx,
- &ndr_table_lsarpc.syntax_id,
- session_info,
- NULL,
- winbind_messaging_context(),
- &cli);
+ if (lp_parm_bool(-1, "winbindd", "use external pipes", false)) {
+ status = rpc_pipe_open_interface(mem_ctx,
+ &ndr_table_lsarpc,
+ session_info,
+ NULL,
+ winbind_messaging_context(),
+ &cli);
+ } else {
+ status = rpc_pipe_open_internal(mem_ctx,
+ &ndr_table_lsarpc.syntax_id,
+ session_info,
+ NULL,
+ winbind_messaging_context(),
+ &cli);
+ }
if (!NT_STATUS_IS_OK(status)) {
DEBUG(0, ("open_lsa_pipe: Could not connect to lsa_pipe: %s\n",
nt_errstr(status)));