From 51ddddfa9f832d1a9aa207c7a13393e3c11b5dc3 Mon Sep 17 00:00:00 2001 From: Christian Ambach Date: Fri, 29 Oct 2010 15:53:20 +0200 Subject: s3:winbind add wcache_tdc_fetch_domainbysid add a function to lookup a domain in the winbind cache by domain SID --- source3/winbindd/winbindd_cache.c | 52 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) (limited to 'source3/winbindd/winbindd_cache.c') diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c index c6ef293134..9363a70a21 100644 --- a/source3/winbindd/winbindd_cache.c +++ b/source3/winbindd/winbindd_cache.c @@ -4542,6 +4542,58 @@ struct winbindd_tdc_domain * wcache_tdc_fetch_domain( TALLOC_CTX *ctx, const cha return d; } +/********************************************************************* + ********************************************************************/ + +struct winbindd_tdc_domain* + wcache_tdc_fetch_domainbysid(TALLOC_CTX *ctx, + const struct dom_sid *sid) +{ + struct winbindd_tdc_domain *dom_list = NULL; + size_t num_domains = 0; + int i; + struct winbindd_tdc_domain *d = NULL; + + DEBUG(10,("wcache_tdc_fetch_domainbysid: Searching for domain %s\n", + sid_string_dbg(sid))); + + if (!init_wcache()) { + return false; + } + + /* fetch the list */ + + wcache_tdc_fetch_list(&dom_list, &num_domains); + + for (i = 0; idomain_name = talloc_strdup(d, + dom_list[i].domain_name); + + d->dns_name = talloc_strdup(d, dom_list[i].dns_name); + sid_copy(&d->sid, &dom_list[i].sid); + d->trust_flags = dom_list[i].trust_flags; + d->trust_type = dom_list[i].trust_type; + d->trust_attribs = dom_list[i].trust_attribs; + + break; + } + } + + TALLOC_FREE(dom_list); + + return d; +} + /********************************************************************* ********************************************************************/ -- cgit