diff options
author | Günther Deschner <gd@samba.org> | 2007-08-30 16:24:51 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:30:23 -0500 |
commit | 46dbd6034ec2c6475f428cd2d5cce56268bc34a7 (patch) | |
tree | b5d40d151fcfab8e9dd706ad9d1a39ca039cb171 /source/nsswitch | |
parent | cd1fccaf8f2ad6e6e4c51909aa7a925efc0a13c4 (diff) | |
download | samba-46dbd6034ec2c6475f428cd2d5cce56268bc34a7.tar.gz samba-46dbd6034ec2c6475f428cd2d5cce56268bc34a7.tar.xz samba-46dbd6034ec2c6475f428cd2d5cce56268bc34a7.zip |
r24807: Add WINBINDD_LOCATOR_KDC_ADDRESS env which will be used for the case when the
locator gets called from within winbindd.
Guenther
Diffstat (limited to 'source/nsswitch')
-rw-r--r-- | source/nsswitch/winbindd_nss.h | 1 | ||||
-rw-r--r-- | source/nsswitch/winbindd_util.c | 33 |
2 files changed, 34 insertions, 0 deletions
diff --git a/source/nsswitch/winbindd_nss.h b/source/nsswitch/winbindd_nss.h index 46f78ffbe66..eadbb0e8ba4 100644 --- a/source/nsswitch/winbindd_nss.h +++ b/source/nsswitch/winbindd_nss.h @@ -39,6 +39,7 @@ #define WINBINDD_PRIV_SOCKET_SUBDIR "winbindd_privileged" /* name of subdirectory of lp_lockdir() to hold the 'privileged' pipe */ #define WINBINDD_DOMAIN_ENV "WINBINDD_DOMAIN" /* Environment variables */ #define WINBINDD_DONT_ENV "_NO_WINBINDD" +#define WINBINDD_LOCATOR_KDC_ADDRESS "WINBINDD_LOCATOR_KDC_ADDRESS" /* Update this when you change the interface. */ diff --git a/source/nsswitch/winbindd_util.c b/source/nsswitch/winbindd_util.c index d12dff09325..225c6b5be1d 100644 --- a/source/nsswitch/winbindd_util.c +++ b/source/nsswitch/winbindd_util.c @@ -1365,3 +1365,36 @@ BOOL winbindd_internal_child(struct winbindd_child *child) return False; } + +/********************************************************************* + ********************************************************************/ + +void winbindd_set_locator_kdc_env(const struct winbindd_domain *domain) +{ + char *var = NULL; + const char *kdc = NULL; + + if (!domain) { + return; + } + + kdc = inet_ntoa(domain->dcaddr.sin_addr); + if (!kdc) { + kdc = domain->dcname; + } + + if (!kdc || !*kdc) { + return; + } + + if (asprintf(&var, "%s_%s", WINBINDD_LOCATOR_KDC_ADDRESS, + strupper_static(domain->alt_name)) == -1) { + return; + } + + DEBUG(10,("winbindd_set_locator_kdc_env: setting var: %s to: %s\n", + var, kdc)); + + setenv(var, kdc, 1); + free(var); +} |