c5c4113dfcabb1eed3d4bdf7609de5170027a794nw/*
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * CDDL HEADER START
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw *
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * The contents of this file are subject to the terms of the
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * Common Development and Distribution License (the "License").
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * You may not use this file except in compliance with the License.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw *
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * or http://www.opensolaris.org/os/licensing.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * See the License for the specific language governing permissions
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * and limitations under the License.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw *
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * When distributing Covered Code, include this CDDL HEADER in each
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * If applicable, add the following below this CDDL HEADER, with the
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * fields enclosed by brackets "[]" replaced with your own identifying
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * information: Portions Copyright [yyyy] [name of copyright owner]
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw *
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw * CDDL HEADER END
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw/*
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
b3700b074e637f8c6991b70754c88a2cfffb246bGordon Ross * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw */
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw#ifndef _IDMAP_CONFIG_H
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw#define _IDMAP_CONFIG_H
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw#include "idmap.h"
c8e261054d98729a8718903716b9b8a512d8b693jp#include "addisc.h"
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw#include <libscf.h>
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw#include <synch.h>
b3700b074e637f8c6991b70754c88a2cfffb246bGordon Ross#include <sys/uuid.h>
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw#ifdef __cplusplus
c5c4113dfcabb1eed3d4bdf7609de5170027a794nwextern "C" {
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw#endif
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw#define MAX_POLICY_SIZE 1023
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw
e3f2c991a8548408db0a2787bd8b43d5124821d3Keyur Desai#define DIRECTORY_MAPPING_NONE 0
e3f2c991a8548408db0a2787bd8b43d5124821d3Keyur Desai#define DIRECTORY_MAPPING_NAME 1
e3f2c991a8548408db0a2787bd8b43d5124821d3Keyur Desai#define DIRECTORY_MAPPING_IDMU 2
e3f2c991a8548408db0a2787bd8b43d5124821d3Keyur Desai
e3f2c991a8548408db0a2787bd8b43d5124821d3Keyur Desaistruct enum_lookup_map {
e3f2c991a8548408db0a2787bd8b43d5124821d3Keyur Desai int value;
e3f2c991a8548408db0a2787bd8b43d5124821d3Keyur Desai char *string;
e3f2c991a8548408db0a2787bd8b43d5124821d3Keyur Desai};
e3f2c991a8548408db0a2787bd8b43d5124821d3Keyur Desai
e3f2c991a8548408db0a2787bd8b43d5124821d3Keyur Desaiextern struct enum_lookup_map directory_mapping_map[];
e3f2c991a8548408db0a2787bd8b43d5124821d3Keyur Desaiextern const char *enum_lookup(int value, struct enum_lookup_map *map);
e3f2c991a8548408db0a2787bd8b43d5124821d3Keyur Desai
c8e261054d98729a8718903716b9b8a512d8b693jp/* SMF and auto-discovery context handles */
c8e261054d98729a8718903716b9b8a512d8b693jptypedef struct idmap_cfg_handles {
c8e261054d98729a8718903716b9b8a512d8b693jp pthread_mutex_t mutex;
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw scf_handle_t *main;
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw scf_instance_t *instance;
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw scf_service_t *service;
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw scf_propertygroup_t *config_pg;
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright scf_propertygroup_t *debug_pg;
c8e261054d98729a8718903716b9b8a512d8b693jp ad_disc_t ad_ctx;
c8e261054d98729a8718903716b9b8a512d8b693jp} idmap_cfg_handles_t;
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw
c8e261054d98729a8718903716b9b8a512d8b693jp/*
c8e261054d98729a8718903716b9b8a512d8b693jp * This structure stores AD and AD-related configuration
c8e261054d98729a8718903716b9b8a512d8b693jp */
4d61c878ad5fbf36c5338bef5994cc5fe88a589aJulian Pullentypedef struct idmap_trustedforest {
4d61c878ad5fbf36c5338bef5994cc5fe88a589aJulian Pullen char *forest_name;
b3700b074e637f8c6991b70754c88a2cfffb246bGordon Ross ad_disc_ds_t *global_catalog; /* global catalog hosts */
4d61c878ad5fbf36c5338bef5994cc5fe88a589aJulian Pullen ad_disc_domainsinforest_t
4d61c878ad5fbf36c5338bef5994cc5fe88a589aJulian Pullen *domains_in_forest;
4d61c878ad5fbf36c5338bef5994cc5fe88a589aJulian Pullen} idmap_trustedforest_t;
4d61c878ad5fbf36c5338bef5994cc5fe88a589aJulian Pullen
4d61c878ad5fbf36c5338bef5994cc5fe88a589aJulian Pullen
c5c4113dfcabb1eed3d4bdf7609de5170027a794nwtypedef struct idmap_pg_config {
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw uint64_t list_size_limit;
48cd229b73530d4ff90bcaca099aec95e2126239Gordon Ross uint64_t id_cache_timeout;
48cd229b73530d4ff90bcaca099aec95e2126239Gordon Ross uint64_t name_cache_timeout;
b3700b074e637f8c6991b70754c88a2cfffb246bGordon Ross uint64_t rediscovery_interval;
12b65585e720714b31036daaa2b30eb76014048eGordon Ross char *machine_uuid; /* machine uuid */
4d61c878ad5fbf36c5338bef5994cc5fe88a589aJulian Pullen char *machine_sid; /* machine sid */
c8e261054d98729a8718903716b9b8a512d8b693jp char *default_domain; /* default domain name */
c8e261054d98729a8718903716b9b8a512d8b693jp char *domain_name; /* AD domain name */
b3700b074e637f8c6991b70754c88a2cfffb246bGordon Ross boolean_t domain_name_auto_disc;
b3700b074e637f8c6991b70754c88a2cfffb246bGordon Ross char *domain_guid; /* GUID (string) */
b3700b074e637f8c6991b70754c88a2cfffb246bGordon Ross boolean_t domain_guid_auto_disc;
b3700b074e637f8c6991b70754c88a2cfffb246bGordon Ross ad_disc_ds_t *domain_controller; /* domain controller hosts */
7a8a68f5e3efbaec1a375c2d50bd20b566631755Julian Pullen boolean_t domain_controller_auto_disc;
c8e261054d98729a8718903716b9b8a512d8b693jp char *forest_name; /* forest name */
7a8a68f5e3efbaec1a375c2d50bd20b566631755Julian Pullen boolean_t forest_name_auto_disc;
c8e261054d98729a8718903716b9b8a512d8b693jp char *site_name; /* site name */
7a8a68f5e3efbaec1a375c2d50bd20b566631755Julian Pullen boolean_t site_name_auto_disc;
b3700b074e637f8c6991b70754c88a2cfffb246bGordon Ross ad_disc_ds_t *global_catalog; /* global catalog hosts */
7a8a68f5e3efbaec1a375c2d50bd20b566631755Julian Pullen boolean_t global_catalog_auto_disc;
4d61c878ad5fbf36c5338bef5994cc5fe88a589aJulian Pullen ad_disc_domainsinforest_t
4d61c878ad5fbf36c5338bef5994cc5fe88a589aJulian Pullen *domains_in_forest;
4d61c878ad5fbf36c5338bef5994cc5fe88a589aJulian Pullen ad_disc_trusteddomains_t
4d61c878ad5fbf36c5338bef5994cc5fe88a589aJulian Pullen *trusted_domains; /* Trusted Domains */
4d61c878ad5fbf36c5338bef5994cc5fe88a589aJulian Pullen int num_trusted_forests;
4d61c878ad5fbf36c5338bef5994cc5fe88a589aJulian Pullen idmap_trustedforest_t
4d61c878ad5fbf36c5338bef5994cc5fe88a589aJulian Pullen *trusted_forests; /* Array of trusted forests */
4d61c878ad5fbf36c5338bef5994cc5fe88a589aJulian Pullen
b3700b074e637f8c6991b70754c88a2cfffb246bGordon Ross ad_disc_ds_t *preferred_dc;
b3700b074e637f8c6991b70754c88a2cfffb246bGordon Ross boolean_t preferred_dc_auto_disc;
b3700b074e637f8c6991b70754c88a2cfffb246bGordon Ross
e8c27ec857e6e2db8c4fe56938b70a89b5bed9f3baban /*
e8c27ec857e6e2db8c4fe56938b70a89b5bed9f3baban * Following properties are associated with directory-based
e8c27ec857e6e2db8c4fe56938b70a89b5bed9f3baban * name-mappings.
e8c27ec857e6e2db8c4fe56938b70a89b5bed9f3baban */
e8c27ec857e6e2db8c4fe56938b70a89b5bed9f3baban char *ad_unixuser_attr;
e8c27ec857e6e2db8c4fe56938b70a89b5bed9f3baban char *ad_unixgroup_attr;
e8c27ec857e6e2db8c4fe56938b70a89b5bed9f3baban char *nldap_winname_attr;
e3f2c991a8548408db0a2787bd8b43d5124821d3Keyur Desai int directory_based_mapping; /* enum */
7a8a68f5e3efbaec1a375c2d50bd20b566631755Julian Pullen boolean_t eph_map_unres_sids;
1ed6b69a5ca1ca3ee5e9a4931f74e2237c7e1c9fGordon Ross boolean_t use_ads;
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright boolean_t use_lsa;
148c5f43199ca0b43fc8e3b643aab11cd66ea327Alan Wright boolean_t disable_cross_forest_trusts;
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw} idmap_pg_config_t;
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw
c5c4113dfcabb1eed3d4bdf7609de5170027a794nwtypedef struct idmap_cfg {
c8e261054d98729a8718903716b9b8a512d8b693jp idmap_pg_config_t pgcfg; /* live AD/ID mapping config */
c8e261054d98729a8718903716b9b8a512d8b693jp idmap_cfg_handles_t handles;
349d5d8f2e43f7f425bc3d025dda555187160ab7nw int initialized;
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw} idmap_cfg_t;
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw
c8e261054d98729a8718903716b9b8a512d8b693jp
c8e261054d98729a8718903716b9b8a512d8b693jpextern void idmap_cfg_unload(idmap_pg_config_t *);
349d5d8f2e43f7f425bc3d025dda555187160ab7nwextern int idmap_cfg_load(idmap_cfg_t *, int);
c8e261054d98729a8718903716b9b8a512d8b693jpextern idmap_cfg_t *idmap_cfg_init(void);
c5c4113dfcabb1eed3d4bdf7609de5170027a794nwextern int idmap_cfg_fini(idmap_cfg_t *);
e3f2c991a8548408db0a2787bd8b43d5124821d3Keyur Desaiextern int idmap_cfg_upgrade(idmap_cfg_t *);
0dcc71495bad040a0c83830efc85acf8d897350dnwextern int idmap_cfg_start_updates(void);
0dcc71495bad040a0c83830efc85acf8d897350dnwextern void idmap_cfg_poke_updates(void);
b3700b074e637f8c6991b70754c88a2cfffb246bGordon Rossextern void idmap_cfg_force_rediscovery(void);
0dcc71495bad040a0c83830efc85acf8d897350dnwextern void idmap_cfg_hup_handler(int);
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw
b3700b074e637f8c6991b70754c88a2cfffb246bGordon Ross#define CFG_DISCOVER 0x1 /* Run discovery */
b3700b074e637f8c6991b70754c88a2cfffb246bGordon Ross#define CFG_FORGET_DC 0x2 /* Forget current DC. */
b3700b074e637f8c6991b70754c88a2cfffb246bGordon Ross#define CFG_LOG 0x4
349d5d8f2e43f7f425bc3d025dda555187160ab7nw
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw#ifdef __cplusplus
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw}
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw#endif
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw
c5c4113dfcabb1eed3d4bdf7609de5170027a794nw#endif /* _IDMAP_CONFIG_H */