diff options
author | Gordon Ross <gwr@nexenta.com> | 2013-06-17 10:01:00 -0400 |
---|---|---|
committer | Gordon Ross <gwr@nexenta.com> | 2015-06-04 16:46:24 -0400 |
commit | 83d2dfe69259e79314662cf95e6d1f9103dcffe2 (patch) | |
tree | cd1e229c4b5f7a5fc9a8e335fa3a508876f539ce /usr/src | |
parent | bcfab0594401266bd287f71573312d8af05de184 (diff) | |
download | illumos-gate-83d2dfe69259e79314662cf95e6d1f9103dcffe2.tar.gz |
5921 Want a netbios_enable parameter in sharectl_smb
Reviewed by: Richard Lowe <richlowe@richlowe.net>
Approved by: Dan McDonald <danmcd@omniti.com>
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/cmd/smbsrv/smbd/server.xml | 4 | ||||
-rw-r--r-- | usr/src/cmd/smbsrv/smbd/smbd_main.c | 6 | ||||
-rw-r--r-- | usr/src/lib/libshare/smb/libshare_smb.c | 5 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/libsmb.h | 4 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/smb_cfg.c | 3 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/smb_info.c | 3 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/smb_kmod.c | 3 | ||||
-rw-r--r-- | usr/src/uts/common/fs/smbsrv/smb_server.c | 15 | ||||
-rw-r--r-- | usr/src/uts/common/smbsrv/smb_ioctl.h | 3 | ||||
-rw-r--r-- | usr/src/uts/common/smbsrv/smbinfo.h | 3 |
10 files changed, 34 insertions, 15 deletions
diff --git a/usr/src/cmd/smbsrv/smbd/server.xml b/usr/src/cmd/smbsrv/smbd/server.xml index 6b83e73762..3ab352c8ad 100644 --- a/usr/src/cmd/smbsrv/smbd/server.xml +++ b/usr/src/cmd/smbsrv/smbd/server.xml @@ -22,7 +22,7 @@ information: Portions Copyright [yyyy] [name of copyright owner] CDDL HEADER END Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. -Copyright 2011 Nexenta Systems, Inc. All rights reserved. +Copyright 2013 Nexenta Systems, Inc. All rights reserved. NOTE: This service manifest is not editable; its contents will be overwritten by package or patch operations, including @@ -188,6 +188,8 @@ file. value='false' override='true'/> <propval name='security' type='astring' value='workgroup' override='true'/> + <propval name='netbios_enable' type='boolean' + value='false' override='true'/> <propval name='netbios_scope' type='astring' value='' override='true'/> <propval name='system_comment' type='astring' diff --git a/usr/src/cmd/smbsrv/smbd/smbd_main.c b/usr/src/cmd/smbsrv/smbd/smbd_main.c index 827f44580f..c1bab75fae 100644 --- a/usr/src/cmd/smbsrv/smbd/smbd_main.c +++ b/usr/src/cmd/smbsrv/smbd/smbd_main.c @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ #include <sys/types.h> @@ -476,7 +476,9 @@ smbd_service_init(void) smbd_dyndns_init(); smb_ipc_init(); - if (smb_netbios_start() != 0) + if (smb_config_getbool(SMB_CI_NETBIOS_ENABLE) == 0) + smbd_report("NetBIOS services disabled"); + else if (smb_netbios_start() != 0) smbd_report("NetBIOS services failed to start"); else smbd_report("NetBIOS services started"); diff --git a/usr/src/lib/libshare/smb/libshare_smb.c b/usr/src/lib/libshare/smb/libshare_smb.c index 75ace3a647..0d087329f7 100644 --- a/usr/src/lib/libshare/smb/libshare_smb.c +++ b/usr/src/lib/libshare/smb/libshare_smb.c @@ -20,9 +20,8 @@ */ /* - * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2012 Nexenta Systems, Inc. All rights reserved. + * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ /* @@ -912,6 +911,8 @@ struct smb_proto_option_defs { SMB_REFRESH_REFRESH }, { SMB_CI_DISPOSITION, 0, MAX_VALUE_BUFLEN, disposition_validator, SMB_REFRESH_REFRESH }, + { SMB_CI_NETBIOS_ENABLE, 0, 0, true_false_validator, + SMB_REFRESH_REFRESH }, }; #define SMB_OPT_NUM \ diff --git a/usr/src/lib/smbsrv/libsmb/common/libsmb.h b/usr/src/lib/smbsrv/libsmb/common/libsmb.h index 24777e3a74..36a63e719b 100644 --- a/usr/src/lib/smbsrv/libsmb/common/libsmb.h +++ b/usr/src/lib/smbsrv/libsmb/common/libsmb.h @@ -21,7 +21,7 @@ /* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2012 Nexenta Systems, Inc. All rights reserved. + * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ #ifndef _LIBSMB_H @@ -130,6 +130,7 @@ typedef enum { SMB_CI_SYNC_ENABLE, SMB_CI_SECURITY, + SMB_CI_NETBIOS_ENABLE, SMB_CI_NBSCOPE, SMB_CI_SYS_CMNT, SMB_CI_LM_LEVEL, @@ -150,6 +151,7 @@ typedef enum { SMB_CI_DISPOSITION, SMB_CI_DFS_STDROOT_NUM, SMB_CI_TRAVERSE_MOUNTS, + SMB_CI_MAX } smb_cfg_id_t; diff --git a/usr/src/lib/smbsrv/libsmb/common/smb_cfg.c b/usr/src/lib/smbsrv/libsmb/common/smb_cfg.c index b59c582ca7..94d36e6c3b 100644 --- a/usr/src/lib/smbsrv/libsmb/common/smb_cfg.c +++ b/usr/src/lib/smbsrv/libsmb/common/smb_cfg.c @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ /* @@ -108,6 +108,7 @@ static smb_cfg_param_t smb_cfg_table[] = /* SMBd configuration */ {SMB_CI_SECURITY, "security", SCF_TYPE_ASTRING, 0}, + {SMB_CI_NETBIOS_ENABLE, "netbios_enable", SCF_TYPE_BOOLEAN, 0}, {SMB_CI_NBSCOPE, "netbios_scope", SCF_TYPE_ASTRING, 0}, {SMB_CI_SYS_CMNT, "system_comment", SCF_TYPE_ASTRING, 0}, {SMB_CI_LM_LEVEL, "lmauth_level", SCF_TYPE_INTEGER, 0}, diff --git a/usr/src/lib/smbsrv/libsmb/common/smb_info.c b/usr/src/lib/smbsrv/libsmb/common/smb_info.c index 2b029fea6f..b8251b185b 100644 --- a/usr/src/lib/smbsrv/libsmb/common/smb_info.c +++ b/usr/src/lib/smbsrv/libsmb/common/smb_info.c @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ #include <assert.h> @@ -89,6 +89,7 @@ smb_load_kconfig(smb_kmod_cfg_t *kcfg) kcfg->skc_restrict_anon = smb_config_getbool(SMB_CI_RESTRICT_ANON); kcfg->skc_signing_enable = smb_config_getbool(SMB_CI_SIGNING_ENABLE); kcfg->skc_signing_required = smb_config_getbool(SMB_CI_SIGNING_REQD); + kcfg->skc_netbios_enable = smb_config_getbool(SMB_CI_NETBIOS_ENABLE); kcfg->skc_ipv6_enable = smb_config_getbool(SMB_CI_IPV6_ENABLE); kcfg->skc_print_enable = smb_config_getbool(SMB_CI_PRINT_ENABLE); kcfg->skc_oplock_enable = smb_config_getbool(SMB_CI_OPLOCK_ENABLE); diff --git a/usr/src/lib/smbsrv/libsmb/common/smb_kmod.c b/usr/src/lib/smbsrv/libsmb/common/smb_kmod.c index 7c2060f9dc..474137ff5e 100644 --- a/usr/src/lib/smbsrv/libsmb/common/smb_kmod.c +++ b/usr/src/lib/smbsrv/libsmb/common/smb_kmod.c @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ #include <sys/types.h> @@ -85,6 +85,7 @@ smb_kmod_setcfg(smb_kmod_cfg_t *cfg) ioc.sync_enable = cfg->skc_sync_enable; ioc.secmode = cfg->skc_secmode; ioc.ipv6_enable = cfg->skc_ipv6_enable; + ioc.netbios_enable = cfg->skc_netbios_enable; ioc.print_enable = cfg->skc_print_enable; ioc.traverse_mounts = cfg->skc_traverse_mounts; ioc.exec_flags = cfg->skc_execflags; diff --git a/usr/src/uts/common/fs/smbsrv/smb_server.c b/usr/src/uts/common/fs/smbsrv/smb_server.c index c77d4a4987..1fb0887458 100644 --- a/usr/src/uts/common/fs/smbsrv/smb_server.c +++ b/usr/src/uts/common/fs/smbsrv/smb_server.c @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2012 Nexenta Systems, Inc. All rights reserved. + * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ /* @@ -631,12 +631,11 @@ smb_server_start(smb_ioc_start_t *ioc) family = AF_INET6; smb_server_listener_init(sv, &sv->sv_tcp_daemon, "smb_tcp_listener", IPPORT_SMB, family); - rc = smb_server_listener_start(&sv->sv_nbt_daemon); - if (rc != 0) - break; rc = smb_server_listener_start(&sv->sv_tcp_daemon); if (rc != 0) break; + if (sv->sv_cfg.skc_netbios_enable) + (void) smb_server_listener_start(&sv->sv_nbt_daemon); sv->sv_state = SMB_SERVER_STATE_RUNNING; sv->sv_start_time = gethrtime(); @@ -1481,6 +1480,13 @@ smb_server_listener_init( static void smb_server_listener_destroy(smb_listener_daemon_t *ld) { + /* + * Note that if startup fails early, we can legitimately + * get here with an all-zeros object. + */ + if (ld->ld_magic == 0) + return; + SMB_LISTENER_VALID(ld); ASSERT(ld->ld_so == NULL); smb_thread_destroy(&ld->ld_thread); @@ -1902,6 +1908,7 @@ smb_server_store_cfg(smb_server_t *sv, smb_ioc_cfg_t *ioc) sv->sv_cfg.skc_ipv6_enable = ioc->ipv6_enable; sv->sv_cfg.skc_print_enable = ioc->print_enable; sv->sv_cfg.skc_traverse_mounts = ioc->traverse_mounts; + sv->sv_cfg.skc_netbios_enable = ioc->netbios_enable; sv->sv_cfg.skc_execflags = ioc->exec_flags; sv->sv_cfg.skc_version = ioc->version; (void) strlcpy(sv->sv_cfg.skc_nbdomain, ioc->nbdomain, diff --git a/usr/src/uts/common/smbsrv/smb_ioctl.h b/usr/src/uts/common/smbsrv/smb_ioctl.h index 84d1081c43..7716cedc04 100644 --- a/usr/src/uts/common/smbsrv/smb_ioctl.h +++ b/usr/src/uts/common/smbsrv/smb_ioctl.h @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ #ifndef _SMB_IOCTL_H_ @@ -160,6 +160,7 @@ typedef struct smb_ioc_cfg { int32_t ipv6_enable; int32_t print_enable; int32_t traverse_mounts; + int32_t netbios_enable; uint32_t exec_flags; smb_version_t version; char nbdomain[NETBIOS_NAME_SZ]; diff --git a/usr/src/uts/common/smbsrv/smbinfo.h b/usr/src/uts/common/smbsrv/smbinfo.h index 0d7f551699..8e7724bdaa 100644 --- a/usr/src/uts/common/smbsrv/smbinfo.h +++ b/usr/src/uts/common/smbsrv/smbinfo.h @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ #ifndef _SMBSRV_SMBINFO_H @@ -125,6 +125,7 @@ typedef struct smb_kmod_cfg { int32_t skc_oplock_enable; int32_t skc_sync_enable; int32_t skc_secmode; + int32_t skc_netbios_enable; int32_t skc_ipv6_enable; int32_t skc_print_enable; int32_t skc_traverse_mounts; |