diff options
author | Stefan Metzmacher <metze@samba.org> | 2012-02-24 15:58:40 +0100 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2012-02-29 10:41:07 +0100 |
commit | 692c42c42731b017310e07549489c3ab0bca7d12 (patch) | |
tree | 24e4b502f8f0c4337f8dd44f73ebca19ebdea93c /source4/winbind/wb_dom_info.c | |
parent | 8e8fde51b4234b75a5b132e7ea7d9c813fe29ee0 (diff) | |
download | samba-692c42c42731b017310e07549489c3ab0bca7d12.tar.gz samba-692c42c42731b017310e07549489c3ab0bca7d12.tar.bz2 samba-692c42c42731b017310e07549489c3ab0bca7d12.zip |
s4:winbind: use ncalrpc for connections to ourself
That avoids recursion if "smbd" is used as file server.
metze
Diffstat (limited to 'source4/winbind/wb_dom_info.c')
-rw-r--r-- | source4/winbind/wb_dom_info.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/source4/winbind/wb_dom_info.c b/source4/winbind/wb_dom_info.c index 5402c1cf62..e2b5defa52 100644 --- a/source4/winbind/wb_dom_info.c +++ b/source4/winbind/wb_dom_info.c @@ -27,6 +27,8 @@ #include "winbind/wb_server.h" #include "smbd/service_task.h" #include "libcli/finddc.h" +#include "lib/socket/netif.h" +#include "param/param.h" struct get_dom_info_state { struct composite_context *ctx; @@ -65,6 +67,24 @@ struct composite_context *wb_get_dom_info_send(TALLOC_CTX *mem_ctx, state->info->sid = dom_sid_dup(state->info, sid); if (state->info->sid == NULL) goto failed; + if ((lpcfg_server_role(service->task->lp_ctx) != ROLE_DOMAIN_MEMBER) && + dom_sid_equal(sid, service->primary_sid) && + service->sec_channel_type != SEC_CHAN_RODC) { + struct interface *ifaces = NULL; + + load_interface_list(state, service->task->lp_ctx, &ifaces); + + state->info->dc = talloc(state->info, struct nbt_dc_name); + + state->info->dc->address = talloc_strdup(state->info->dc, + iface_list_n_ip(ifaces, 0)); + state->info->dc->name = talloc_strdup(state->info->dc, + lpcfg_netbios_name(service->task->lp_ctx)); + + composite_done(state->ctx); + return result; + } + dom_sid = dom_sid_dup(mem_ctx, sid); if (dom_sid == NULL) goto failed; |