diff options
| author | Gordon Ross <gwr@nexenta.com> | 2019-02-07 16:43:45 -0500 |
|---|---|---|
| committer | Gordon Ross <gwr@nexenta.com> | 2019-06-06 11:13:51 -0400 |
| commit | a774f103e3771c7c04da927df024cf184248ad8f (patch) | |
| tree | 6dd008922f8c791cb75b2e2c95c7839f49ac3089 /usr/src/lib/smbsrv | |
| parent | fea136a04b3f86ab3ec31e4c157379030fee9ade (diff) | |
| download | illumos-joyent-a774f103e3771c7c04da927df024cf184248ad8f.tar.gz | |
11005 ads_site broken in sharectl get/set smb
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
Approved by: Garrett D'Amore <garrett@damore.org>
Diffstat (limited to 'usr/src/lib/smbsrv')
| -rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/smb_cfg.c | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/usr/src/lib/smbsrv/libsmb/common/smb_cfg.c b/usr/src/lib/smbsrv/libsmb/common/smb_cfg.c index a82e55f5ff..0bc13e4a3c 100644 --- a/usr/src/lib/smbsrv/libsmb/common/smb_cfg.c +++ b/usr/src/lib/smbsrv/libsmb/common/smb_cfg.c @@ -66,10 +66,11 @@ struct str_val { #define MACHINE_UUID "machine_uuid" #define IDMAP_DOMAIN "domain_name" #define IDMAP_PREF_DC "preferred_dc" +#define IDMAP_SITE_NAME "site_name" #define IDMAP_PG_NAME "config" -#define SMB_SECMODE_WORKGRP_STR "workgroup" -#define SMB_SECMODE_DOMAIN_STR "domain" +#define SMB_SECMODE_WORKGRP_STR "workgroup" +#define SMB_SECMODE_DOMAIN_STR "domain" #define SMB_ENC_LEN 1024 #define SMB_DEC_LEN 256 @@ -156,6 +157,8 @@ static char *smb_base64_encode(char *str_to_encode); static char *smb_base64_decode(char *encoded_str); static int smb_config_get_idmap_preferred_dc(char *, int); static int smb_config_set_idmap_preferred_dc(char *); +static int smb_config_get_idmap_site_name(char *, int); +static int smb_config_set_idmap_site_name(char *); char * smb_config_getname(smb_cfg_id_t id) @@ -377,6 +380,8 @@ smb_config_getstr(smb_cfg_id_t id, char *cbuf, int bufsz) cfg = smb_config_getent(id); assert(cfg->sc_type == SCF_TYPE_ASTRING); + if (id == SMB_CI_ADS_SITE) + return (smb_config_get_idmap_site_name(cbuf, bufsz)); if (id == SMB_CI_DOMAIN_SRV) return (smb_config_get_idmap_preferred_dc(cbuf, bufsz)); @@ -583,6 +588,8 @@ smb_config_setstr(smb_cfg_id_t id, char *value) cfg = smb_config_getent(id); assert(cfg->sc_type == SCF_TYPE_ASTRING); + if (id == SMB_CI_ADS_SITE) + return (smb_config_set_idmap_site_name(value)); if (id == SMB_CI_DOMAIN_SRV) return (smb_config_set_idmap_preferred_dc(value)); @@ -877,6 +884,30 @@ smb_config_set_idmap_preferred_dc(char *value) IDMAP_PREF_DC, value)); } +static int +smb_config_get_idmap_site_name(char *cbuf, int bufsz) +{ + char *s; + int len, rc = -1; + + s = smb_config_getenv_generic(IDMAP_SITE_NAME, + IDMAP_FMRI_PREFIX, IDMAP_PG_NAME); + if (s != NULL) { + len = strlcpy(cbuf, s, bufsz); + if (len < bufsz) + rc = 0; + free(s); + } + return (rc); +} + +static int +smb_config_set_idmap_site_name(char *value) +{ + return (smb_config_setenv_generic(IDMAP_FMRI_PREFIX, IDMAP_PG_NAME, + IDMAP_SITE_NAME, value)); +} + /* * smb_config_set_idmap_domain * |
