summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorGordon Ross <gwr@nexenta.com>2013-06-17 10:01:00 -0400
committerGordon Ross <gwr@nexenta.com>2015-06-04 16:46:24 -0400
commit83d2dfe69259e79314662cf95e6d1f9103dcffe2 (patch)
treecd1e229c4b5f7a5fc9a8e335fa3a508876f539ce /usr/src
parentbcfab0594401266bd287f71573312d8af05de184 (diff)
downloadillumos-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.xml4
-rw-r--r--usr/src/cmd/smbsrv/smbd/smbd_main.c6
-rw-r--r--usr/src/lib/libshare/smb/libshare_smb.c5
-rw-r--r--usr/src/lib/smbsrv/libsmb/common/libsmb.h4
-rw-r--r--usr/src/lib/smbsrv/libsmb/common/smb_cfg.c3
-rw-r--r--usr/src/lib/smbsrv/libsmb/common/smb_info.c3
-rw-r--r--usr/src/lib/smbsrv/libsmb/common/smb_kmod.c3
-rw-r--r--usr/src/uts/common/fs/smbsrv/smb_server.c15
-rw-r--r--usr/src/uts/common/smbsrv/smb_ioctl.h3
-rw-r--r--usr/src/uts/common/smbsrv/smbinfo.h3
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;