summaryrefslogtreecommitdiff
path: root/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_domain.c
diff options
context:
space:
mode:
authorGordon Ross <gwr@nexenta.com>2012-12-16 22:41:29 -0500
committerGordon Ross <gwr@nexenta.com>2014-11-18 14:17:36 -0500
commit1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9f (patch)
treecbf5612fc6b3f93ddc715d40058879ef005f72de /usr/src/lib/smbsrv/libmlsvc/common/mlsvc_domain.c
parent177d5b5f8c0e969013441207a0a705ae66b08cf7 (diff)
downloadillumos-joyent-1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9f.tar.gz
5316 allow smbadm join to use RPC
Reviewed by: Bayard Bell <bayard.bell@nexenta.com> Reviewed by: Dan McDonald <danmcd@nexenta.com> Reviewed by: Thomas Keiser <thomas.keiser@nexenta.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> Approved by: Robert Mustacchi <rm@joyent.com>
Diffstat (limited to 'usr/src/lib/smbsrv/libmlsvc/common/mlsvc_domain.c')
-rw-r--r--usr/src/lib/smbsrv/libmlsvc/common/mlsvc_domain.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_domain.c b/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_domain.c
index 32f87fbbe6..00040f5482 100644
--- a/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_domain.c
+++ b/usr/src/lib/smbsrv/libmlsvc/common/mlsvc_domain.c
@@ -21,7 +21,7 @@
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2012 Nexenta Systems, Inc. All rights reserved.
*/
#include <syslog.h>
@@ -65,7 +65,7 @@ static pthread_t smb_dclocator_thr;
static void *smb_ddiscover_service(void *);
static void smb_ddiscover_main(char *, char *);
-static boolean_t smb_ddiscover_dns(char *, char *, smb_domainex_t *);
+static uint32_t smb_ddiscover_dns(char *, char *, smb_domainex_t *);
static boolean_t smb_ddiscover_nbt(char *, char *, smb_domainex_t *);
static boolean_t smb_ddiscover_domain_match(char *, char *, uint32_t);
static uint32_t smb_ddiscover_qinfo(char *, char *, smb_domainex_t *);
@@ -235,26 +235,27 @@ static void
smb_ddiscover_main(char *domain, char *server)
{
smb_domainex_t dxi;
- boolean_t discovered;
+ uint32_t status;
bzero(&dxi, sizeof (smb_domainex_t));
if (smb_domain_start_update() != SMB_DOMAIN_SUCCESS)
return;
- if (SMB_IS_FQDN(domain))
- discovered = smb_ddiscover_dns(domain, server, &dxi);
- else
- discovered = smb_ddiscover_nbt(domain, server, &dxi);
+ status = smb_ddiscover_dns(domain, server, &dxi);
+ if (status != 0 && !SMB_IS_FQDN(domain)) {
+ if (smb_ddiscover_nbt(domain, server, &dxi))
+ status = 0;
+ }
- if (discovered)
+ if (status == 0)
smb_domain_update(&dxi);
smb_domain_end_update();
smb_domainex_free(&dxi);
- if (discovered)
+ if (status == 0)
smb_domain_save();
}
@@ -262,16 +263,16 @@ smb_ddiscover_main(char *domain, char *server)
* Discovers a DC for the specified domain via DNS. If a DC is found
* primary and trusted domains information will be queried.
*/
-static boolean_t
+static uint32_t
smb_ddiscover_dns(char *domain, char *server, smb_domainex_t *dxi)
{
uint32_t status;
if (!smb_ads_lookup_msdcs(domain, server, dxi->d_dc, MAXHOSTNAMELEN))
- return (B_FALSE);
+ return (NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND);
status = smb_ddiscover_qinfo(domain, dxi->d_dc, dxi);
- return (status == NT_STATUS_SUCCESS);
+ return (status);
}
/*