17a8a68f5SJulian Pullen /* 27a8a68f5SJulian Pullen * CDDL HEADER START 37a8a68f5SJulian Pullen * 47a8a68f5SJulian Pullen * The contents of this file are subject to the terms of the 57a8a68f5SJulian Pullen * Common Development and Distribution License (the "License"). 67a8a68f5SJulian Pullen * You may not use this file except in compliance with the License. 77a8a68f5SJulian Pullen * 87a8a68f5SJulian Pullen * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 97a8a68f5SJulian Pullen * or http://www.opensolaris.org/os/licensing. 107a8a68f5SJulian Pullen * See the License for the specific language governing permissions 117a8a68f5SJulian Pullen * and limitations under the License. 127a8a68f5SJulian Pullen * 137a8a68f5SJulian Pullen * When distributing Covered Code, include this CDDL HEADER in each 147a8a68f5SJulian Pullen * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 157a8a68f5SJulian Pullen * If applicable, add the following below this CDDL HEADER, with the 167a8a68f5SJulian Pullen * fields enclosed by brackets "[]" replaced with your own identifying 177a8a68f5SJulian Pullen * information: Portions Copyright [yyyy] [name of copyright owner] 187a8a68f5SJulian Pullen * 197a8a68f5SJulian Pullen * CDDL HEADER END 207a8a68f5SJulian Pullen */ 217a8a68f5SJulian Pullen 227a8a68f5SJulian Pullen /* 23*c5866007SKeyur Desai * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. 247a8a68f5SJulian Pullen */ 257a8a68f5SJulian Pullen 267a8a68f5SJulian Pullen #ifndef _ADINFO_H 277a8a68f5SJulian Pullen #define _ADINFO_H 287a8a68f5SJulian Pullen 299b214d32SJordan Brown #include <rpcsvc/idmap_prot.h> 307a8a68f5SJulian Pullen 317a8a68f5SJulian Pullen 327a8a68f5SJulian Pullen #ifdef __cplusplus 337a8a68f5SJulian Pullen extern "C" { 347a8a68f5SJulian Pullen #endif 357a8a68f5SJulian Pullen 367a8a68f5SJulian Pullen /* 377a8a68f5SJulian Pullen * Maximum string SID size. 4 bytes for "S-1-", 15 for 2^48 (max authority), 387a8a68f5SJulian Pullen * another '-', and ridcount (max 15) 10-digit RIDs plus '-' in between, plus 397a8a68f5SJulian Pullen * a null. 407a8a68f5SJulian Pullen */ 417a8a68f5SJulian Pullen #define MAXSTRSID 185 427a8a68f5SJulian Pullen #define MAXDOMAINNAME 256 437a8a68f5SJulian Pullen 447a8a68f5SJulian Pullen typedef struct ad_disc *ad_disc_t; 457a8a68f5SJulian Pullen 467a8a68f5SJulian Pullen 477a8a68f5SJulian Pullen typedef struct ad_disc_domains_in_forest { 487a8a68f5SJulian Pullen char domain[MAXDOMAINNAME]; 497a8a68f5SJulian Pullen char sid[MAXSTRSID]; 507a8a68f5SJulian Pullen int trusted; /* This is not used by auto */ 517a8a68f5SJulian Pullen /* discovery. It is provided so that */ 527a8a68f5SJulian Pullen /* domains in a forest can be marked */ 537a8a68f5SJulian Pullen /* as trusted. */ 547a8a68f5SJulian Pullen } ad_disc_domainsinforest_t; 557a8a68f5SJulian Pullen 567a8a68f5SJulian Pullen 577a8a68f5SJulian Pullen typedef struct ad_disc_trusted_domains { 587a8a68f5SJulian Pullen char domain[MAXDOMAINNAME]; 597a8a68f5SJulian Pullen int direction; 607a8a68f5SJulian Pullen } ad_disc_trusteddomains_t; 617a8a68f5SJulian Pullen 627a8a68f5SJulian Pullen enum ad_disc_req { 637a8a68f5SJulian Pullen AD_DISC_PREFER_SITE = 0, /* Prefer Site specific version */ 647a8a68f5SJulian Pullen AD_DISC_SITE_SPECIFIC, /* Request Site specific version */ 657a8a68f5SJulian Pullen AD_DISC_GLOBAL /* Request global version */ 667a8a68f5SJulian Pullen }; 677a8a68f5SJulian Pullen 687a8a68f5SJulian Pullen ad_disc_t ad_disc_init(void); 697a8a68f5SJulian Pullen 707a8a68f5SJulian Pullen void ad_disc_fini(ad_disc_t); 717a8a68f5SJulian Pullen 727a8a68f5SJulian Pullen /* 737a8a68f5SJulian Pullen * The following routines auto discover the specific item 747a8a68f5SJulian Pullen */ 757a8a68f5SJulian Pullen char * 767a8a68f5SJulian Pullen ad_disc_get_DomainName(ad_disc_t ctx, boolean_t *auto_discovered); 777a8a68f5SJulian Pullen 787a8a68f5SJulian Pullen idmap_ad_disc_ds_t * 797a8a68f5SJulian Pullen ad_disc_get_DomainController(ad_disc_t ctx, 807a8a68f5SJulian Pullen enum ad_disc_req req, boolean_t *auto_discovered); 817a8a68f5SJulian Pullen 827a8a68f5SJulian Pullen char * 837a8a68f5SJulian Pullen ad_disc_get_SiteName(ad_disc_t ctx, boolean_t *auto_discovered); 847a8a68f5SJulian Pullen 857a8a68f5SJulian Pullen char * 867a8a68f5SJulian Pullen ad_disc_get_ForestName(ad_disc_t ctx, boolean_t *auto_discovered); 877a8a68f5SJulian Pullen 887a8a68f5SJulian Pullen idmap_ad_disc_ds_t * 897a8a68f5SJulian Pullen ad_disc_get_GlobalCatalog(ad_disc_t ctx, enum ad_disc_req, 907a8a68f5SJulian Pullen boolean_t *auto_discovered); 917a8a68f5SJulian Pullen 927a8a68f5SJulian Pullen ad_disc_trusteddomains_t * 937a8a68f5SJulian Pullen ad_disc_get_TrustedDomains(ad_disc_t ctx, boolean_t *auto_discovered); 947a8a68f5SJulian Pullen 957a8a68f5SJulian Pullen ad_disc_domainsinforest_t * 967a8a68f5SJulian Pullen ad_disc_get_DomainsInForest(ad_disc_t ctx, boolean_t *auto_discovered); 977a8a68f5SJulian Pullen 987a8a68f5SJulian Pullen 997a8a68f5SJulian Pullen /* 1007a8a68f5SJulian Pullen * The following routines over ride auto discovery with the 1017a8a68f5SJulian Pullen * specified values 1027a8a68f5SJulian Pullen */ 1037a8a68f5SJulian Pullen int 1047a8a68f5SJulian Pullen ad_disc_set_DomainName(ad_disc_t ctx, const char *domainName); 1057a8a68f5SJulian Pullen 1067a8a68f5SJulian Pullen int 1077a8a68f5SJulian Pullen ad_disc_set_DomainController(ad_disc_t ctx, 1087a8a68f5SJulian Pullen const idmap_ad_disc_ds_t *domainController); 1097a8a68f5SJulian Pullen 1107a8a68f5SJulian Pullen int 1117a8a68f5SJulian Pullen ad_disc_set_SiteName(ad_disc_t ctx, const char *siteName); 1127a8a68f5SJulian Pullen 1137a8a68f5SJulian Pullen int 1147a8a68f5SJulian Pullen ad_disc_set_ForestName(ad_disc_t ctx, const char *forestName); 1157a8a68f5SJulian Pullen 1167a8a68f5SJulian Pullen int 1177a8a68f5SJulian Pullen ad_disc_set_GlobalCatalog(ad_disc_t ctx, 1187a8a68f5SJulian Pullen const idmap_ad_disc_ds_t *globalCatalog); 1197a8a68f5SJulian Pullen 1207a8a68f5SJulian Pullen 1217a8a68f5SJulian Pullen /* 1227a8a68f5SJulian Pullen * This routine forces all auto discovery item to be recomputed 1237a8a68f5SJulian Pullen * on request 1247a8a68f5SJulian Pullen */ 1257a8a68f5SJulian Pullen void ad_disc_refresh(ad_disc_t); 1267a8a68f5SJulian Pullen 127*c5866007SKeyur Desai /* 128*c5866007SKeyur Desai * This routine marks the end of a discovery cycle and sets 129*c5866007SKeyur Desai * the sanity limits on the time before the next cycle. 130*c5866007SKeyur Desai */ 131*c5866007SKeyur Desai void ad_disc_done(ad_disc_t); 132*c5866007SKeyur Desai 1337a8a68f5SJulian Pullen /* This routine unsets all overridden values */ 1347a8a68f5SJulian Pullen int ad_disc_unset(ad_disc_t ctx); 1357a8a68f5SJulian Pullen 1367a8a68f5SJulian Pullen /* This routine test for subnet changes */ 1377a8a68f5SJulian Pullen boolean_t ad_disc_SubnetChanged(ad_disc_t); 1387a8a68f5SJulian Pullen 1397a8a68f5SJulian Pullen /* This routine returns the Time To Live for auto discovered items */ 1407a8a68f5SJulian Pullen int ad_disc_get_TTL(ad_disc_t); 1417a8a68f5SJulian Pullen 1427a8a68f5SJulian Pullen int ad_disc_compare_ds(idmap_ad_disc_ds_t *ds1, idmap_ad_disc_ds_t *ds2); 1437a8a68f5SJulian Pullen 1447a8a68f5SJulian Pullen int ad_disc_compare_trusteddomains(ad_disc_trusteddomains_t *td1, 1457a8a68f5SJulian Pullen ad_disc_trusteddomains_t *td2); 1467a8a68f5SJulian Pullen 1477a8a68f5SJulian Pullen int ad_disc_compare_domainsinforest(ad_disc_domainsinforest_t *td1, 1487a8a68f5SJulian Pullen ad_disc_domainsinforest_t *td2); 1497a8a68f5SJulian Pullen 1507a8a68f5SJulian Pullen #ifdef __cplusplus 1517a8a68f5SJulian Pullen } 1527a8a68f5SJulian Pullen #endif 1537a8a68f5SJulian Pullen 1547a8a68f5SJulian Pullen #endif /* _ADINFO_H */ 155