diff options
author | joyce mcintosh <Joyce.McIntosh@Sun.COM> | 2010-08-11 16:48:54 -0700 |
---|---|---|
committer | joyce mcintosh <Joyce.McIntosh@Sun.COM> | 2010-08-11 16:48:54 -0700 |
commit | fd9ee8b58485b20072eeef1310a88ff348d5e7fa (patch) | |
tree | 74e8f3fc5f5409cdc6be3dae5631f8d0c672260a /usr/src/lib/smbsrv/libsmbns | |
parent | e2c5185af3c50d9510e5df68aa37abdc6c0d3aac (diff) | |
download | illumos-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.h | 6 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmbns/common/mapfile-vers | 1 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmbns/common/smbns_browser.c | 7 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmbns/common/smbns_dyndns.c | 55 |
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; |