From 6baa40e3fe59a68046d31a93eb154237d7bd0837 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 10 Jul 2001 02:28:17 +0000 Subject: added winbind_exclude_domain() so smbd can tell the winbind client code not to do lookups for a particular domain. This allows winbind to operate on a Samba PDC (This used to be commit d472ee3a690fb6db03fd4536e4093a18fc37ddbb) --- source3/nsswitch/wb_common.c | 17 +++++++++++++++++ source3/smbd/server.c | 5 +++++ 2 files changed, 22 insertions(+) (limited to 'source3') diff --git a/source3/nsswitch/wb_common.c b/source3/nsswitch/wb_common.c index ed0075a358..0ec29aa2d7 100644 --- a/source3/nsswitch/wb_common.c +++ b/source3/nsswitch/wb_common.c @@ -29,6 +29,17 @@ /* Global variables. These are effectively the client state information */ static int established_socket = -1; /* fd for winbindd socket */ +static char *excluded_domain; + +/* + smbd needs to be able to exclude lookups for its own domain +*/ +void winbind_exclude_domain(const char *domain) +{ + if (excluded_domain) free(excluded_domain); + excluded_domain = strdup(domain); +} + /* Initialise a request structure */ @@ -321,6 +332,12 @@ NSS_STATUS winbindd_request(int req_type, return NSS_STATUS_NOTFOUND; } + /* smbd may have excluded this domain */ + if (excluded_domain && + strcasecmp(excluded_domain, request->domain) == 0) { + return NSS_STATUS_NOTFOUND; + } + if (!response) { ZERO_STRUCT(lresponse); response = &lresponse; diff --git a/source3/smbd/server.c b/source3/smbd/server.c index f753d615ed..7947b9cbc0 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -693,6 +693,11 @@ static void usage(char *pname) return(-1); init_structs(); + + /* don't call winbind for our domain if we are the DC */ + if (lp_domain_logons()) { + winbind_exclude_domain(lp_workgroup()); + } #ifdef WITH_PROFILE if (!profile_setup(False)) { -- cgit