xref: /titanic_52/usr/src/lib/libadutils/common/addisc.h (revision c586600796766c83eb9485c446886fd9ed2359a9)
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