smb_dclocator
smb_dclocator.sdl_locate = B_TRUE;
smb_ddiscover_service, &smb_dclocator);
(void) mutex_lock(&smb_dclocator.sdl_mtx);
if (strcmp(smb_dclocator.sdl_domain, domain)) {
(void) strlcpy(smb_dclocator.sdl_domain, domain,
sizeof (smb_dclocator.sdl_domain));
smb_dclocator.sdl_cfg_chg = B_TRUE;
if (!smb_dclocator.sdl_locate) {
smb_dclocator.sdl_locate = B_TRUE;
(void) cond_broadcast(&smb_dclocator.sdl_cv);
while (smb_dclocator.sdl_locate) {
rc = cond_reltimedwait(&smb_dclocator.sdl_cv,
&smb_dclocator.sdl_mtx, &to);
if (smb_dclocator.sdl_status != 0) {
smb_dclocator.sdl_status);
(void) mutex_unlock(&smb_dclocator.sdl_mtx);
(void) mutex_lock(&smb_dclocator.sdl_mtx);
if (smb_dclocator.sdl_cfg_chg == B_FALSE) {
smb_dclocator.sdl_cfg_chg = B_TRUE;
if (!smb_dclocator.sdl_locate) {
smb_dclocator.sdl_locate = B_TRUE;
(void) cond_broadcast(&smb_dclocator.sdl_cv);
(void) mutex_unlock(&smb_dclocator.sdl_mtx);
(void) mutex_lock(&smb_dclocator.sdl_mtx);
smb_dclocator.sdl_dci.dc_name, bad_dc);
if (strcmp(smb_dclocator.sdl_dci.dc_name, bad_dc)) {
if (smb_dclocator.sdl_bad_dc) {
smb_dclocator.sdl_bad_dc = B_TRUE;
if (!smb_dclocator.sdl_locate) {
smb_dclocator.sdl_locate = B_TRUE;
(void) cond_broadcast(&smb_dclocator.sdl_cv);
(void) mutex_unlock(&smb_dclocator.sdl_mtx);
static smb_dclocator_t smb_dclocator;