summaryrefslogtreecommitdiff
path: root/usr/src/lib/smbsrv/libsmbns
diff options
context:
space:
mode:
authorjoyce mcintosh <Joyce.McIntosh@Sun.COM>2010-08-11 16:48:54 -0700
committerjoyce mcintosh <Joyce.McIntosh@Sun.COM>2010-08-11 16:48:54 -0700
commitfd9ee8b58485b20072eeef1310a88ff348d5e7fa (patch)
tree74e8f3fc5f5409cdc6be3dae5631f8d0c672260a /usr/src/lib/smbsrv/libsmbns
parente2c5185af3c50d9510e5df68aa37abdc6c0d3aac (diff)
downloadillumos-gate-fd9ee8b58485b20072eeef1310a88ff348d5e7fa.tar.gz
6972305 Preferred DC not selected after setting pdc via sharectl
6971047 smbd hang during FVT regression test 6711195 Sparc:Get error "Windows Explorer has stopped working" once click on Details fr Properties on Vista PSARC/2009/464 Offline attribute 6972515 Offline attribute - PSARC 2009/464 PSARC/2010/037 Windows Sparse Attribute 6972519 Windows Sparse Attribute - PSARC 2010/037 6719444 [CLI] - idmap help's output is not consistent with man pages's 6975449 idmap test suite needs idmap_cache_get_data() from libidmap 6974351 OpenSSL still taking smbd down --HG-- rename : usr/src/lib/libidmap/common/idmap_priv.h => usr/src/cmd/idmap/idmap/namemaps.h
Diffstat (limited to 'usr/src/lib/smbsrv/libsmbns')
-rw-r--r--usr/src/lib/smbsrv/libsmbns/common/libsmbns.h6
-rw-r--r--usr/src/lib/smbsrv/libsmbns/common/mapfile-vers1
-rw-r--r--usr/src/lib/smbsrv/libsmbns/common/smbns_browser.c7
-rw-r--r--usr/src/lib/smbsrv/libsmbns/common/smbns_dyndns.c55
4 files changed, 27 insertions, 42 deletions
diff --git a/usr/src/lib/smbsrv/libsmbns/common/libsmbns.h b/usr/src/lib/smbsrv/libsmbns/common/libsmbns.h
index 354f394435..ba54279da4 100644
--- a/usr/src/lib/smbsrv/libsmbns/common/libsmbns.h
+++ b/usr/src/lib/smbsrv/libsmbns/common/libsmbns.h
@@ -19,8 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
*/
#ifndef _LIBSMBNS_H
@@ -96,7 +95,8 @@ extern boolean_t smb_ads_lookup_msdcs(char *, char *, char *, uint32_t);
extern smb_ads_host_info_t *smb_ads_find_host(char *, char *);
/* DYNDNS functions */
-extern int dyndns_start(void);
+extern void *dyndns_publisher(void *);
+extern void dyndns_start(void);
extern void dyndns_stop(void);
extern int dyndns_update(char *);
extern void dyndns_update_zones(void);
diff --git a/usr/src/lib/smbsrv/libsmbns/common/mapfile-vers b/usr/src/lib/smbsrv/libsmbns/common/mapfile-vers
index 05155f64fb..48af7b02ea 100644
--- a/usr/src/lib/smbsrv/libsmbns/common/mapfile-vers
+++ b/usr/src/lib/smbsrv/libsmbns/common/mapfile-vers
@@ -41,6 +41,7 @@ $mapfile_version 2
SYMBOL_VERSION SUNWprivate {
global:
dyndns_clear_zones;
+ dyndns_publisher;
dyndns_start;
dyndns_stop;
dyndns_update;
diff --git a/usr/src/lib/smbsrv/libsmbns/common/smbns_browser.c b/usr/src/lib/smbsrv/libsmbns/common/smbns_browser.c
index 52fbf9de69..0c145da369 100644
--- a/usr/src/lib/smbsrv/libsmbns/common/smbns_browser.c
+++ b/usr/src/lib/smbsrv/libsmbns/common/smbns_browser.c
@@ -19,8 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
*/
#include <sys/tzfile.h>
@@ -834,8 +833,8 @@ smb_browser_send_HostAnnouncement(smb_hostinfo_t *hinfo,
++hinfo->hi_updatecnt,
next_announcement * 60000, /* Periodicity in MilliSeconds */
hinfo->hi_nbname,
- hinfo->hi_version.sv_major,
- hinfo->hi_version.sv_minor,
+ (uint8_t)hinfo->hi_version.sv_major,
+ (uint8_t)hinfo->hi_version.sv_minor,
type,
SMB_SERVER_SIGNATURE,
hinfo->hi_nic.nic_cmnt);
diff --git a/usr/src/lib/smbsrv/libsmbns/common/smbns_dyndns.c b/usr/src/lib/smbsrv/libsmbns/common/smbns_dyndns.c
index 24e1d175ac..26aff77bb6 100644
--- a/usr/src/lib/smbsrv/libsmbns/common/smbns_dyndns.c
+++ b/usr/src/lib/smbsrv/libsmbns/common/smbns_dyndns.c
@@ -104,7 +104,6 @@ static dyndns_queue_t dyndns_queue;
static void dyndns_queue_request(int, const char *);
static void dyndns_queue_flush(list_t *);
-static void *dyndns_publisher(void *);
static void dyndns_process(list_t *);
static int dyndns_update_core(char *);
static int dyndns_clear_rev_zone(char *);
@@ -112,20 +111,14 @@ static void dyndns_msgid_init(void);
static int dyndns_get_msgid(void);
static void dyndns_syslog(int, int, const char *);
-int
+void
dyndns_start(void)
{
- pthread_t publisher;
- pthread_attr_t tattr;
- int rc;
-
- if (!smb_config_getbool(SMB_CI_DYNDNS_ENABLE))
- return (0);
-
(void) mutex_lock(&dyndns_queue.ddq_mtx);
+
if (dyndns_queue.ddq_state != DYNDNS_STATE_INIT) {
(void) mutex_unlock(&dyndns_queue.ddq_mtx);
- return (0);
+ return;
}
dyndns_msgid_init();
@@ -133,13 +126,8 @@ dyndns_start(void)
list_create(&dyndns_queue.ddq_list, sizeof (dyndns_qentry_t),
offsetof(dyndns_qentry_t, dqe_lnd));
dyndns_queue.ddq_state = DYNDNS_STATE_READY;
- (void) mutex_unlock(&dyndns_queue.ddq_mtx);
- (void) pthread_attr_init(&tattr);
- (void) pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_DETACHED);
- rc = pthread_create(&publisher, &tattr, dyndns_publisher, 0);
- (void) pthread_attr_destroy(&tattr);
- return (rc);
+ (void) mutex_unlock(&dyndns_queue.ddq_mtx);
}
void
@@ -194,6 +182,9 @@ dyndns_update_zones(void)
/*
* Add a request to the queue.
+ *
+ * To comply with RFC 4120 section 6.2.1, entry->dqe_fqdn is converted
+ * to lower case.
*/
static void
dyndns_queue_request(int op, const char *fqdn)
@@ -203,33 +194,27 @@ dyndns_queue_request(int op, const char *fqdn)
if (!smb_config_getbool(SMB_CI_DYNDNS_ENABLE))
return;
+ if ((entry = malloc(sizeof (dyndns_qentry_t))) == NULL)
+ return;
+
+ bzero(entry, sizeof (dyndns_qentry_t));
+ entry->dqe_op = op;
+ (void) strlcpy(entry->dqe_fqdn, fqdn, MAXNAMELEN);
+ (void) smb_strlwr(entry->dqe_fqdn);
+
(void) mutex_lock(&dyndns_queue.ddq_mtx);
switch (dyndns_queue.ddq_state) {
case DYNDNS_STATE_READY:
case DYNDNS_STATE_PUBLISHING:
+ list_insert_tail(&dyndns_queue.ddq_list, entry);
+ (void) cond_signal(&dyndns_queue.ddq_cv);
break;
default:
- (void) mutex_unlock(&dyndns_queue.ddq_mtx);
- return;
- }
-
- if ((entry = malloc(sizeof (dyndns_qentry_t))) == NULL) {
- (void) mutex_unlock(&dyndns_queue.ddq_mtx);
- return;
+ free(entry);
+ break;
}
- bzero(entry, sizeof (dyndns_qentry_t));
- entry->dqe_op = op;
- (void) strlcpy(entry->dqe_fqdn, fqdn, MAXNAMELEN);
- /*
- * To comply with RFC 4120 section 6.2.1, entry->dqe_fqdn is converted
- * to lower case.
- */
- (void) smb_strlwr(entry->dqe_fqdn);
-
- list_insert_tail(&dyndns_queue.ddq_list, entry);
- (void) cond_signal(&dyndns_queue.ddq_cv);
(void) mutex_unlock(&dyndns_queue.ddq_mtx);
}
@@ -255,7 +240,7 @@ dyndns_queue_flush(list_t *lst)
* to retry.
*/
/*ARGSUSED*/
-static void *
+void *
dyndns_publisher(void *arg)
{
dyndns_qentry_t *entry;