18671SJulian.Pullen@Sun.COM /* 28671SJulian.Pullen@Sun.COM * CDDL HEADER START 38671SJulian.Pullen@Sun.COM * 48671SJulian.Pullen@Sun.COM * The contents of this file are subject to the terms of the 58671SJulian.Pullen@Sun.COM * Common Development and Distribution License (the "License"). 68671SJulian.Pullen@Sun.COM * You may not use this file except in compliance with the License. 78671SJulian.Pullen@Sun.COM * 88671SJulian.Pullen@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 98671SJulian.Pullen@Sun.COM * or http://www.opensolaris.org/os/licensing. 108671SJulian.Pullen@Sun.COM * See the License for the specific language governing permissions 118671SJulian.Pullen@Sun.COM * and limitations under the License. 128671SJulian.Pullen@Sun.COM * 138671SJulian.Pullen@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 148671SJulian.Pullen@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 158671SJulian.Pullen@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 168671SJulian.Pullen@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 178671SJulian.Pullen@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 188671SJulian.Pullen@Sun.COM * 198671SJulian.Pullen@Sun.COM * CDDL HEADER END 208671SJulian.Pullen@Sun.COM */ 218671SJulian.Pullen@Sun.COM 228671SJulian.Pullen@Sun.COM /* 23*12508Samw@Sun.COM * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. 248671SJulian.Pullen@Sun.COM */ 258671SJulian.Pullen@Sun.COM 268671SJulian.Pullen@Sun.COM #ifndef _ADINFO_H 278671SJulian.Pullen@Sun.COM #define _ADINFO_H 288671SJulian.Pullen@Sun.COM 299565SJordan.Brown@Sun.COM #include <rpcsvc/idmap_prot.h> 30*12508Samw@Sun.COM #include "libadutils.h" 318671SJulian.Pullen@Sun.COM 328671SJulian.Pullen@Sun.COM 338671SJulian.Pullen@Sun.COM #ifdef __cplusplus 348671SJulian.Pullen@Sun.COM extern "C" { 358671SJulian.Pullen@Sun.COM #endif 368671SJulian.Pullen@Sun.COM 378671SJulian.Pullen@Sun.COM /* 388671SJulian.Pullen@Sun.COM * Maximum string SID size. 4 bytes for "S-1-", 15 for 2^48 (max authority), 398671SJulian.Pullen@Sun.COM * another '-', and ridcount (max 15) 10-digit RIDs plus '-' in between, plus 408671SJulian.Pullen@Sun.COM * a null. 418671SJulian.Pullen@Sun.COM */ 428671SJulian.Pullen@Sun.COM #define MAXSTRSID 185 438671SJulian.Pullen@Sun.COM #define MAXDOMAINNAME 256 448671SJulian.Pullen@Sun.COM 458671SJulian.Pullen@Sun.COM typedef struct ad_disc *ad_disc_t; 468671SJulian.Pullen@Sun.COM 478671SJulian.Pullen@Sun.COM 488671SJulian.Pullen@Sun.COM typedef struct ad_disc_domains_in_forest { 498671SJulian.Pullen@Sun.COM char domain[MAXDOMAINNAME]; 508671SJulian.Pullen@Sun.COM char sid[MAXSTRSID]; 518671SJulian.Pullen@Sun.COM int trusted; /* This is not used by auto */ 528671SJulian.Pullen@Sun.COM /* discovery. It is provided so that */ 538671SJulian.Pullen@Sun.COM /* domains in a forest can be marked */ 548671SJulian.Pullen@Sun.COM /* as trusted. */ 558671SJulian.Pullen@Sun.COM } ad_disc_domainsinforest_t; 568671SJulian.Pullen@Sun.COM 578671SJulian.Pullen@Sun.COM 588671SJulian.Pullen@Sun.COM typedef struct ad_disc_trusted_domains { 598671SJulian.Pullen@Sun.COM char domain[MAXDOMAINNAME]; 608671SJulian.Pullen@Sun.COM int direction; 618671SJulian.Pullen@Sun.COM } ad_disc_trusteddomains_t; 628671SJulian.Pullen@Sun.COM 638671SJulian.Pullen@Sun.COM enum ad_disc_req { 648671SJulian.Pullen@Sun.COM AD_DISC_PREFER_SITE = 0, /* Prefer Site specific version */ 658671SJulian.Pullen@Sun.COM AD_DISC_SITE_SPECIFIC, /* Request Site specific version */ 668671SJulian.Pullen@Sun.COM AD_DISC_GLOBAL /* Request global version */ 678671SJulian.Pullen@Sun.COM }; 688671SJulian.Pullen@Sun.COM 698671SJulian.Pullen@Sun.COM ad_disc_t ad_disc_init(void); 708671SJulian.Pullen@Sun.COM 718671SJulian.Pullen@Sun.COM void ad_disc_fini(ad_disc_t); 728671SJulian.Pullen@Sun.COM 738671SJulian.Pullen@Sun.COM /* 748671SJulian.Pullen@Sun.COM * The following routines auto discover the specific item 758671SJulian.Pullen@Sun.COM */ 768671SJulian.Pullen@Sun.COM char * 778671SJulian.Pullen@Sun.COM ad_disc_get_DomainName(ad_disc_t ctx, boolean_t *auto_discovered); 788671SJulian.Pullen@Sun.COM 798671SJulian.Pullen@Sun.COM idmap_ad_disc_ds_t * 808671SJulian.Pullen@Sun.COM ad_disc_get_DomainController(ad_disc_t ctx, 818671SJulian.Pullen@Sun.COM enum ad_disc_req req, boolean_t *auto_discovered); 828671SJulian.Pullen@Sun.COM 838671SJulian.Pullen@Sun.COM char * 848671SJulian.Pullen@Sun.COM ad_disc_get_SiteName(ad_disc_t ctx, boolean_t *auto_discovered); 858671SJulian.Pullen@Sun.COM 868671SJulian.Pullen@Sun.COM char * 878671SJulian.Pullen@Sun.COM ad_disc_get_ForestName(ad_disc_t ctx, boolean_t *auto_discovered); 888671SJulian.Pullen@Sun.COM 898671SJulian.Pullen@Sun.COM idmap_ad_disc_ds_t * 908671SJulian.Pullen@Sun.COM ad_disc_get_GlobalCatalog(ad_disc_t ctx, enum ad_disc_req, 918671SJulian.Pullen@Sun.COM boolean_t *auto_discovered); 928671SJulian.Pullen@Sun.COM 938671SJulian.Pullen@Sun.COM ad_disc_trusteddomains_t * 948671SJulian.Pullen@Sun.COM ad_disc_get_TrustedDomains(ad_disc_t ctx, boolean_t *auto_discovered); 958671SJulian.Pullen@Sun.COM 968671SJulian.Pullen@Sun.COM ad_disc_domainsinforest_t * 978671SJulian.Pullen@Sun.COM ad_disc_get_DomainsInForest(ad_disc_t ctx, boolean_t *auto_discovered); 988671SJulian.Pullen@Sun.COM 998671SJulian.Pullen@Sun.COM 1008671SJulian.Pullen@Sun.COM /* 1018671SJulian.Pullen@Sun.COM * The following routines over ride auto discovery with the 1028671SJulian.Pullen@Sun.COM * specified values 1038671SJulian.Pullen@Sun.COM */ 1048671SJulian.Pullen@Sun.COM int 1058671SJulian.Pullen@Sun.COM ad_disc_set_DomainName(ad_disc_t ctx, const char *domainName); 1068671SJulian.Pullen@Sun.COM 1078671SJulian.Pullen@Sun.COM int 1088671SJulian.Pullen@Sun.COM ad_disc_set_DomainController(ad_disc_t ctx, 1098671SJulian.Pullen@Sun.COM const idmap_ad_disc_ds_t *domainController); 1108671SJulian.Pullen@Sun.COM 1118671SJulian.Pullen@Sun.COM int 1128671SJulian.Pullen@Sun.COM ad_disc_set_SiteName(ad_disc_t ctx, const char *siteName); 1138671SJulian.Pullen@Sun.COM 1148671SJulian.Pullen@Sun.COM int 1158671SJulian.Pullen@Sun.COM ad_disc_set_ForestName(ad_disc_t ctx, const char *forestName); 1168671SJulian.Pullen@Sun.COM 1178671SJulian.Pullen@Sun.COM int 1188671SJulian.Pullen@Sun.COM ad_disc_set_GlobalCatalog(ad_disc_t ctx, 1198671SJulian.Pullen@Sun.COM const idmap_ad_disc_ds_t *globalCatalog); 1208671SJulian.Pullen@Sun.COM 1218671SJulian.Pullen@Sun.COM 1228671SJulian.Pullen@Sun.COM /* 1238671SJulian.Pullen@Sun.COM * This routine forces all auto discovery item to be recomputed 1248671SJulian.Pullen@Sun.COM * on request 1258671SJulian.Pullen@Sun.COM */ 1268671SJulian.Pullen@Sun.COM void ad_disc_refresh(ad_disc_t); 1278671SJulian.Pullen@Sun.COM 12812065SKeyur.Desai@Sun.COM /* 12912065SKeyur.Desai@Sun.COM * This routine marks the end of a discovery cycle and sets 13012065SKeyur.Desai@Sun.COM * the sanity limits on the time before the next cycle. 13112065SKeyur.Desai@Sun.COM */ 13212065SKeyur.Desai@Sun.COM void ad_disc_done(ad_disc_t); 13312065SKeyur.Desai@Sun.COM 1348671SJulian.Pullen@Sun.COM /* This routine unsets all overridden values */ 1358671SJulian.Pullen@Sun.COM int ad_disc_unset(ad_disc_t ctx); 1368671SJulian.Pullen@Sun.COM 1378671SJulian.Pullen@Sun.COM /* This routine test for subnet changes */ 1388671SJulian.Pullen@Sun.COM boolean_t ad_disc_SubnetChanged(ad_disc_t); 1398671SJulian.Pullen@Sun.COM 1408671SJulian.Pullen@Sun.COM /* This routine returns the Time To Live for auto discovered items */ 1418671SJulian.Pullen@Sun.COM int ad_disc_get_TTL(ad_disc_t); 1428671SJulian.Pullen@Sun.COM 1438671SJulian.Pullen@Sun.COM int ad_disc_compare_ds(idmap_ad_disc_ds_t *ds1, idmap_ad_disc_ds_t *ds2); 1448671SJulian.Pullen@Sun.COM 1458671SJulian.Pullen@Sun.COM int ad_disc_compare_trusteddomains(ad_disc_trusteddomains_t *td1, 1468671SJulian.Pullen@Sun.COM ad_disc_trusteddomains_t *td2); 1478671SJulian.Pullen@Sun.COM 1488671SJulian.Pullen@Sun.COM int ad_disc_compare_domainsinforest(ad_disc_domainsinforest_t *td1, 1498671SJulian.Pullen@Sun.COM ad_disc_domainsinforest_t *td2); 1508671SJulian.Pullen@Sun.COM 1518671SJulian.Pullen@Sun.COM #ifdef __cplusplus 1528671SJulian.Pullen@Sun.COM } 1538671SJulian.Pullen@Sun.COM #endif 1548671SJulian.Pullen@Sun.COM 1558671SJulian.Pullen@Sun.COM #endif /* _ADINFO_H */ 156