summaryrefslogtreecommitdiff
path: root/source3/nsswitch/wb_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/nsswitch/wb_common.c')
-rw-r--r--source3/nsswitch/wb_common.c17
1 files changed, 17 insertions, 0 deletions
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;