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*148c5f43SAlan Wright * Copyright (c) 2007, 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> 30*148c5f43SAlan Wright #include "libadutils.h" 317a8a68f5SJulian Pullen 327a8a68f5SJulian Pullen 337a8a68f5SJulian Pullen #ifdef __cplusplus 347a8a68f5SJulian Pullen extern "C" { 357a8a68f5SJulian Pullen #endif 367a8a68f5SJulian Pullen 377a8a68f5SJulian Pullen /* 387a8a68f5SJulian Pullen * Maximum string SID size. 4 bytes for "S-1-", 15 for 2^48 (max authority), 397a8a68f5SJulian Pullen * another '-', and ridcount (max 15) 10-digit RIDs plus '-' in between, plus 407a8a68f5SJulian Pullen * a null. 417a8a68f5SJulian Pullen */ 427a8a68f5SJulian Pullen #define MAXSTRSID 185 437a8a68f5SJulian Pullen #define MAXDOMAINNAME 256 447a8a68f5SJulian Pullen 457a8a68f5SJulian Pullen typedef struct ad_disc *ad_disc_t; 467a8a68f5SJulian Pullen 477a8a68f5SJulian Pullen 487a8a68f5SJulian Pullen typedef struct ad_disc_domains_in_forest { 497a8a68f5SJulian Pullen char domain[MAXDOMAINNAME]; 507a8a68f5SJulian Pullen char sid[MAXSTRSID]; 517a8a68f5SJulian Pullen int trusted; /* This is not used by auto */ 527a8a68f5SJulian Pullen /* discovery. It is provided so that */ 537a8a68f5SJulian Pullen /* domains in a forest can be marked */ 547a8a68f5SJulian Pullen /* as trusted. */ 557a8a68f5SJulian Pullen } ad_disc_domainsinforest_t; 567a8a68f5SJulian Pullen 577a8a68f5SJulian Pullen 587a8a68f5SJulian Pullen typedef struct ad_disc_trusted_domains { 597a8a68f5SJulian Pullen char domain[MAXDOMAINNAME]; 607a8a68f5SJulian Pullen int direction; 617a8a68f5SJulian Pullen } ad_disc_trusteddomains_t; 627a8a68f5SJulian Pullen 637a8a68f5SJulian Pullen enum ad_disc_req { 647a8a68f5SJulian Pullen AD_DISC_PREFER_SITE = 0, /* Prefer Site specific version */ 657a8a68f5SJulian Pullen AD_DISC_SITE_SPECIFIC, /* Request Site specific version */ 667a8a68f5SJulian Pullen AD_DISC_GLOBAL /* Request global version */ 677a8a68f5SJulian Pullen }; 687a8a68f5SJulian Pullen 697a8a68f5SJulian Pullen ad_disc_t ad_disc_init(void); 707a8a68f5SJulian Pullen 717a8a68f5SJulian Pullen void ad_disc_fini(ad_disc_t); 727a8a68f5SJulian Pullen 737a8a68f5SJulian Pullen /* 747a8a68f5SJulian Pullen * The following routines auto discover the specific item 757a8a68f5SJulian Pullen */ 767a8a68f5SJulian Pullen char * 777a8a68f5SJulian Pullen ad_disc_get_DomainName(ad_disc_t ctx, boolean_t *auto_discovered); 787a8a68f5SJulian Pullen 797a8a68f5SJulian Pullen idmap_ad_disc_ds_t * 807a8a68f5SJulian Pullen ad_disc_get_DomainController(ad_disc_t ctx, 817a8a68f5SJulian Pullen enum ad_disc_req req, boolean_t *auto_discovered); 827a8a68f5SJulian Pullen 837a8a68f5SJulian Pullen char * 847a8a68f5SJulian Pullen ad_disc_get_SiteName(ad_disc_t ctx, boolean_t *auto_discovered); 857a8a68f5SJulian Pullen 867a8a68f5SJulian Pullen char * 877a8a68f5SJulian Pullen ad_disc_get_ForestName(ad_disc_t ctx, boolean_t *auto_discovered); 887a8a68f5SJulian Pullen 897a8a68f5SJulian Pullen idmap_ad_disc_ds_t * 907a8a68f5SJulian Pullen ad_disc_get_GlobalCatalog(ad_disc_t ctx, enum ad_disc_req, 917a8a68f5SJulian Pullen boolean_t *auto_discovered); 927a8a68f5SJulian Pullen 937a8a68f5SJulian Pullen ad_disc_trusteddomains_t * 947a8a68f5SJulian Pullen ad_disc_get_TrustedDomains(ad_disc_t ctx, boolean_t *auto_discovered); 957a8a68f5SJulian Pullen 967a8a68f5SJulian Pullen ad_disc_domainsinforest_t * 977a8a68f5SJulian Pullen ad_disc_get_DomainsInForest(ad_disc_t ctx, boolean_t *auto_discovered); 987a8a68f5SJulian Pullen 997a8a68f5SJulian Pullen 1007a8a68f5SJulian Pullen /* 1017a8a68f5SJulian Pullen * The following routines over ride auto discovery with the 1027a8a68f5SJulian Pullen * specified values 1037a8a68f5SJulian Pullen */ 1047a8a68f5SJulian Pullen int 1057a8a68f5SJulian Pullen ad_disc_set_DomainName(ad_disc_t ctx, const char *domainName); 1067a8a68f5SJulian Pullen 1077a8a68f5SJulian Pullen int 1087a8a68f5SJulian Pullen ad_disc_set_DomainController(ad_disc_t ctx, 1097a8a68f5SJulian Pullen const idmap_ad_disc_ds_t *domainController); 1107a8a68f5SJulian Pullen 1117a8a68f5SJulian Pullen int 1127a8a68f5SJulian Pullen ad_disc_set_SiteName(ad_disc_t ctx, const char *siteName); 1137a8a68f5SJulian Pullen 1147a8a68f5SJulian Pullen int 1157a8a68f5SJulian Pullen ad_disc_set_ForestName(ad_disc_t ctx, const char *forestName); 1167a8a68f5SJulian Pullen 1177a8a68f5SJulian Pullen int 1187a8a68f5SJulian Pullen ad_disc_set_GlobalCatalog(ad_disc_t ctx, 1197a8a68f5SJulian Pullen const idmap_ad_disc_ds_t *globalCatalog); 1207a8a68f5SJulian Pullen 1217a8a68f5SJulian Pullen 1227a8a68f5SJulian Pullen /* 1237a8a68f5SJulian Pullen * This routine forces all auto discovery item to be recomputed 1247a8a68f5SJulian Pullen * on request 1257a8a68f5SJulian Pullen */ 1267a8a68f5SJulian Pullen void ad_disc_refresh(ad_disc_t); 1277a8a68f5SJulian Pullen 128c5866007SKeyur Desai /* 129c5866007SKeyur Desai * This routine marks the end of a discovery cycle and sets 130c5866007SKeyur Desai * the sanity limits on the time before the next cycle. 131c5866007SKeyur Desai */ 132c5866007SKeyur Desai void ad_disc_done(ad_disc_t); 133c5866007SKeyur Desai 1347a8a68f5SJulian Pullen /* This routine unsets all overridden values */ 1357a8a68f5SJulian Pullen int ad_disc_unset(ad_disc_t ctx); 1367a8a68f5SJulian Pullen 1377a8a68f5SJulian Pullen /* This routine test for subnet changes */ 1387a8a68f5SJulian Pullen boolean_t ad_disc_SubnetChanged(ad_disc_t); 1397a8a68f5SJulian Pullen 1407a8a68f5SJulian Pullen /* This routine returns the Time To Live for auto discovered items */ 1417a8a68f5SJulian Pullen int ad_disc_get_TTL(ad_disc_t); 1427a8a68f5SJulian Pullen 1437a8a68f5SJulian Pullen int ad_disc_compare_ds(idmap_ad_disc_ds_t *ds1, idmap_ad_disc_ds_t *ds2); 1447a8a68f5SJulian Pullen 1457a8a68f5SJulian Pullen int ad_disc_compare_trusteddomains(ad_disc_trusteddomains_t *td1, 1467a8a68f5SJulian Pullen ad_disc_trusteddomains_t *td2); 1477a8a68f5SJulian Pullen 1487a8a68f5SJulian Pullen int ad_disc_compare_domainsinforest(ad_disc_domainsinforest_t *td1, 1497a8a68f5SJulian Pullen ad_disc_domainsinforest_t *td2); 1507a8a68f5SJulian Pullen 1517a8a68f5SJulian Pullen #ifdef __cplusplus 1527a8a68f5SJulian Pullen } 1537a8a68f5SJulian Pullen #endif 1547a8a68f5SJulian Pullen 1557a8a68f5SJulian Pullen #endif /* _ADINFO_H */ 156