Mercurial > illumos > git > illumos-omnios
changeset 21438:90c979f55037
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>
author | Gordon Ross <gwr@nexenta.com> |
---|---|
date | Thu, 07 Feb 2019 16:43:45 -0500 |
parents | 624e8530581c |
children | ee46bbf8eb49 |
files | usr/src/cmd/idmap/idmapd/idmap.xml usr/src/cmd/idmap/idmapd/idmap_config.c usr/src/lib/smbsrv/libsmb/common/smb_cfg.c usr/src/tools/quick/make-idmap |
diffstat | 4 files changed, 58 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/cmd/idmap/idmapd/idmap.xml Wed Dec 05 16:59:06 2018 -0500 +++ b/usr/src/cmd/idmap/idmapd/idmap.xml Thu Feb 07 16:43:45 2019 -0500 @@ -118,6 +118,10 @@ type='count' value='3600' /> <propval + name='site_name' + type='astring' + value='' /> + <propval name='use_ads' type='boolean' value='true' />
--- a/usr/src/cmd/idmap/idmapd/idmap_config.c Wed Dec 05 16:59:06 2018 -0500 +++ b/usr/src/cmd/idmap/idmapd/idmap_config.c Thu Feb 07 16:43:45 2019 -0500 @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2018 Nexenta Systems, Inc. All rights reserved. + * Copyright 2019 Nexenta Systems, Inc. All rights reserved. */ @@ -1487,7 +1487,8 @@ */ static int -valid_ldap_attr(const char *attr) { +valid_ldap_attr(const char *attr) +{ for (; *attr; attr++) { if (!isalnum(*attr) && *attr != '-' && *attr != '_' && *attr != '.' && *attr != ';') @@ -1647,9 +1648,10 @@ free(pgcfg->domain_name); pgcfg->domain_name = NULL; } + if (pgcfg->domain_name != NULL) + pgcfg->domain_name_auto_disc = B_FALSE; (void) ad_disc_set_DomainName(handles->ad_ctx, pgcfg->domain_name); - pgcfg->domain_name_auto_disc = B_FALSE; } rc = get_val_astring(handles, "default_domain", @@ -1742,16 +1744,30 @@ if (rc != 0) (*errors)++; else { + if (pgcfg->forest_name != NULL && + pgcfg->forest_name[0] == '\0') { + free(pgcfg->forest_name); + pgcfg->forest_name = NULL; + } + if (pgcfg->forest_name != NULL) + pgcfg->forest_name_auto_disc = B_FALSE; (void) ad_disc_set_ForestName(handles->ad_ctx, pgcfg->forest_name); - pgcfg->forest_name_auto_disc = B_FALSE; } rc = get_val_astring(handles, "site_name", &pgcfg->site_name); if (rc != 0) (*errors)++; - else + else { + if (pgcfg->site_name != NULL && + pgcfg->site_name[0] == '\0') { + free(pgcfg->site_name); + pgcfg->site_name = NULL; + } + if (pgcfg->site_name != NULL) + pgcfg->site_name_auto_disc = B_FALSE; (void) ad_disc_set_SiteName(handles->ad_ctx, pgcfg->site_name); + } rc = get_val_ds(handles, "global_catalog", 3268, &pgcfg->global_catalog);
--- a/usr/src/lib/smbsrv/libsmb/common/smb_cfg.c Wed Dec 05 16:59:06 2018 -0500 +++ b/usr/src/lib/smbsrv/libsmb/common/smb_cfg.c Thu Feb 07 16:43:45 2019 -0500 @@ -66,10 +66,11 @@ #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_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 @@ 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 @@ 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 @@ 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 *
--- a/usr/src/tools/quick/make-idmap Wed Dec 05 16:59:06 2018 -0500 +++ b/usr/src/tools/quick/make-idmap Thu Feb 07 16:43:45 2019 -0500 @@ -186,7 +186,6 @@ do_tar() { git_rev=`git rev-parse --short=8 HEAD` files=" -kernel/misc/idmap kernel/misc/amd64/idmap lib/svc/manifest/system/idmap.xml usr/lib/idmapd