1*7a8a68f5SJulian Pullen /* 2*7a8a68f5SJulian Pullen * CDDL HEADER START 3*7a8a68f5SJulian Pullen * 4*7a8a68f5SJulian Pullen * The contents of this file are subject to the terms of the 5*7a8a68f5SJulian Pullen * Common Development and Distribution License (the "License"). 6*7a8a68f5SJulian Pullen * You may not use this file except in compliance with the License. 7*7a8a68f5SJulian Pullen * 8*7a8a68f5SJulian Pullen * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*7a8a68f5SJulian Pullen * or http://www.opensolaris.org/os/licensing. 10*7a8a68f5SJulian Pullen * See the License for the specific language governing permissions 11*7a8a68f5SJulian Pullen * and limitations under the License. 12*7a8a68f5SJulian Pullen * 13*7a8a68f5SJulian Pullen * When distributing Covered Code, include this CDDL HEADER in each 14*7a8a68f5SJulian Pullen * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*7a8a68f5SJulian Pullen * If applicable, add the following below this CDDL HEADER, with the 16*7a8a68f5SJulian Pullen * fields enclosed by brackets "[]" replaced with your own identifying 17*7a8a68f5SJulian Pullen * information: Portions Copyright [yyyy] [name of copyright owner] 18*7a8a68f5SJulian Pullen * 19*7a8a68f5SJulian Pullen * CDDL HEADER END 20*7a8a68f5SJulian Pullen */ 21*7a8a68f5SJulian Pullen 22*7a8a68f5SJulian Pullen /* 23*7a8a68f5SJulian Pullen * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24*7a8a68f5SJulian Pullen * Use is subject to license terms. 25*7a8a68f5SJulian Pullen */ 26*7a8a68f5SJulian Pullen 27*7a8a68f5SJulian Pullen #ifndef _ADINFO_H 28*7a8a68f5SJulian Pullen #define _ADINFO_H 29*7a8a68f5SJulian Pullen 30*7a8a68f5SJulian Pullen #include "idmap_prot.h" 31*7a8a68f5SJulian Pullen 32*7a8a68f5SJulian Pullen 33*7a8a68f5SJulian Pullen #ifdef __cplusplus 34*7a8a68f5SJulian Pullen extern "C" { 35*7a8a68f5SJulian Pullen #endif 36*7a8a68f5SJulian Pullen 37*7a8a68f5SJulian Pullen /* 38*7a8a68f5SJulian Pullen * Maximum string SID size. 4 bytes for "S-1-", 15 for 2^48 (max authority), 39*7a8a68f5SJulian Pullen * another '-', and ridcount (max 15) 10-digit RIDs plus '-' in between, plus 40*7a8a68f5SJulian Pullen * a null. 41*7a8a68f5SJulian Pullen */ 42*7a8a68f5SJulian Pullen #define MAXSTRSID 185 43*7a8a68f5SJulian Pullen #define MAXDOMAINNAME 256 44*7a8a68f5SJulian Pullen 45*7a8a68f5SJulian Pullen typedef struct ad_disc *ad_disc_t; 46*7a8a68f5SJulian Pullen 47*7a8a68f5SJulian Pullen 48*7a8a68f5SJulian Pullen typedef struct ad_disc_domains_in_forest { 49*7a8a68f5SJulian Pullen char domain[MAXDOMAINNAME]; 50*7a8a68f5SJulian Pullen char sid[MAXSTRSID]; 51*7a8a68f5SJulian Pullen int trusted; /* This is not used by auto */ 52*7a8a68f5SJulian Pullen /* discovery. It is provided so that */ 53*7a8a68f5SJulian Pullen /* domains in a forest can be marked */ 54*7a8a68f5SJulian Pullen /* as trusted. */ 55*7a8a68f5SJulian Pullen } ad_disc_domainsinforest_t; 56*7a8a68f5SJulian Pullen 57*7a8a68f5SJulian Pullen 58*7a8a68f5SJulian Pullen typedef struct ad_disc_trusted_domains { 59*7a8a68f5SJulian Pullen char domain[MAXDOMAINNAME]; 60*7a8a68f5SJulian Pullen int direction; 61*7a8a68f5SJulian Pullen } ad_disc_trusteddomains_t; 62*7a8a68f5SJulian Pullen 63*7a8a68f5SJulian Pullen enum ad_disc_req { 64*7a8a68f5SJulian Pullen AD_DISC_PREFER_SITE = 0, /* Prefer Site specific version */ 65*7a8a68f5SJulian Pullen AD_DISC_SITE_SPECIFIC, /* Request Site specific version */ 66*7a8a68f5SJulian Pullen AD_DISC_GLOBAL /* Request global version */ 67*7a8a68f5SJulian Pullen }; 68*7a8a68f5SJulian Pullen 69*7a8a68f5SJulian Pullen ad_disc_t ad_disc_init(void); 70*7a8a68f5SJulian Pullen 71*7a8a68f5SJulian Pullen void ad_disc_fini(ad_disc_t); 72*7a8a68f5SJulian Pullen 73*7a8a68f5SJulian Pullen /* 74*7a8a68f5SJulian Pullen * The following routines auto discover the specific item 75*7a8a68f5SJulian Pullen */ 76*7a8a68f5SJulian Pullen char * 77*7a8a68f5SJulian Pullen ad_disc_get_DomainName(ad_disc_t ctx, boolean_t *auto_discovered); 78*7a8a68f5SJulian Pullen 79*7a8a68f5SJulian Pullen idmap_ad_disc_ds_t * 80*7a8a68f5SJulian Pullen ad_disc_get_DomainController(ad_disc_t ctx, 81*7a8a68f5SJulian Pullen enum ad_disc_req req, boolean_t *auto_discovered); 82*7a8a68f5SJulian Pullen 83*7a8a68f5SJulian Pullen char * 84*7a8a68f5SJulian Pullen ad_disc_get_SiteName(ad_disc_t ctx, boolean_t *auto_discovered); 85*7a8a68f5SJulian Pullen 86*7a8a68f5SJulian Pullen char * 87*7a8a68f5SJulian Pullen ad_disc_get_ForestName(ad_disc_t ctx, boolean_t *auto_discovered); 88*7a8a68f5SJulian Pullen 89*7a8a68f5SJulian Pullen idmap_ad_disc_ds_t * 90*7a8a68f5SJulian Pullen ad_disc_get_GlobalCatalog(ad_disc_t ctx, enum ad_disc_req, 91*7a8a68f5SJulian Pullen boolean_t *auto_discovered); 92*7a8a68f5SJulian Pullen 93*7a8a68f5SJulian Pullen ad_disc_trusteddomains_t * 94*7a8a68f5SJulian Pullen ad_disc_get_TrustedDomains(ad_disc_t ctx, boolean_t *auto_discovered); 95*7a8a68f5SJulian Pullen 96*7a8a68f5SJulian Pullen ad_disc_domainsinforest_t * 97*7a8a68f5SJulian Pullen ad_disc_get_DomainsInForest(ad_disc_t ctx, boolean_t *auto_discovered); 98*7a8a68f5SJulian Pullen 99*7a8a68f5SJulian Pullen 100*7a8a68f5SJulian Pullen /* 101*7a8a68f5SJulian Pullen * The following routines over ride auto discovery with the 102*7a8a68f5SJulian Pullen * specified values 103*7a8a68f5SJulian Pullen */ 104*7a8a68f5SJulian Pullen int 105*7a8a68f5SJulian Pullen ad_disc_set_DomainName(ad_disc_t ctx, const char *domainName); 106*7a8a68f5SJulian Pullen 107*7a8a68f5SJulian Pullen int 108*7a8a68f5SJulian Pullen ad_disc_set_DomainController(ad_disc_t ctx, 109*7a8a68f5SJulian Pullen const idmap_ad_disc_ds_t *domainController); 110*7a8a68f5SJulian Pullen 111*7a8a68f5SJulian Pullen int 112*7a8a68f5SJulian Pullen ad_disc_set_SiteName(ad_disc_t ctx, const char *siteName); 113*7a8a68f5SJulian Pullen 114*7a8a68f5SJulian Pullen int 115*7a8a68f5SJulian Pullen ad_disc_set_ForestName(ad_disc_t ctx, const char *forestName); 116*7a8a68f5SJulian Pullen 117*7a8a68f5SJulian Pullen int 118*7a8a68f5SJulian Pullen ad_disc_set_GlobalCatalog(ad_disc_t ctx, 119*7a8a68f5SJulian Pullen const idmap_ad_disc_ds_t *globalCatalog); 120*7a8a68f5SJulian Pullen 121*7a8a68f5SJulian Pullen 122*7a8a68f5SJulian Pullen /* 123*7a8a68f5SJulian Pullen * This routine forces all auto discovery item to be recomputed 124*7a8a68f5SJulian Pullen * on request 125*7a8a68f5SJulian Pullen */ 126*7a8a68f5SJulian Pullen void ad_disc_refresh(ad_disc_t); 127*7a8a68f5SJulian Pullen 128*7a8a68f5SJulian Pullen /* This routine unsets all overridden values */ 129*7a8a68f5SJulian Pullen int ad_disc_unset(ad_disc_t ctx); 130*7a8a68f5SJulian Pullen 131*7a8a68f5SJulian Pullen /* This routine test for subnet changes */ 132*7a8a68f5SJulian Pullen boolean_t ad_disc_SubnetChanged(ad_disc_t); 133*7a8a68f5SJulian Pullen 134*7a8a68f5SJulian Pullen /* This routine returns the Time To Live for auto discovered items */ 135*7a8a68f5SJulian Pullen int ad_disc_get_TTL(ad_disc_t); 136*7a8a68f5SJulian Pullen 137*7a8a68f5SJulian Pullen int ad_disc_compare_ds(idmap_ad_disc_ds_t *ds1, idmap_ad_disc_ds_t *ds2); 138*7a8a68f5SJulian Pullen 139*7a8a68f5SJulian Pullen int ad_disc_compare_trusteddomains(ad_disc_trusteddomains_t *td1, 140*7a8a68f5SJulian Pullen ad_disc_trusteddomains_t *td2); 141*7a8a68f5SJulian Pullen 142*7a8a68f5SJulian Pullen int ad_disc_compare_domainsinforest(ad_disc_domainsinforest_t *td1, 143*7a8a68f5SJulian Pullen ad_disc_domainsinforest_t *td2); 144*7a8a68f5SJulian Pullen 145*7a8a68f5SJulian Pullen #ifdef __cplusplus 146*7a8a68f5SJulian Pullen } 147*7a8a68f5SJulian Pullen #endif 148*7a8a68f5SJulian Pullen 149*7a8a68f5SJulian Pullen #endif /* _ADINFO_H */ 150