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