summaryrefslogtreecommitdiff
path: root/usr/src/lib/libadutils/common/addisc.h
blob: faf3393523497a1f4781d471857ba60daedfdbf8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */

/*
 * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

#ifndef	_ADINFO_H
#define	_ADINFO_H

#include <rpcsvc/idmap_prot.h>


#ifdef __cplusplus
extern "C" {
#endif

/*
 * Maximum string SID size. 4 bytes for "S-1-", 15 for 2^48 (max authority),
 * another '-', and ridcount (max 15) 10-digit RIDs plus '-' in between, plus
 * a null.
 */
#define	MAXSTRSID		185
#define	MAXDOMAINNAME		256

typedef struct ad_disc *ad_disc_t;


typedef struct ad_disc_domains_in_forest {
	char domain[MAXDOMAINNAME];
	char sid[MAXSTRSID];
	int trusted;			/* This is not used by auto */
					/* discovery. It is provided so that */
					/* domains in a forest can be marked */
					/* as trusted. */
} ad_disc_domainsinforest_t;


typedef struct ad_disc_trusted_domains {
		char domain[MAXDOMAINNAME];
		int direction;
} ad_disc_trusteddomains_t;

enum ad_disc_req {
		AD_DISC_PREFER_SITE = 0, /* Prefer Site specific version */
		AD_DISC_SITE_SPECIFIC,	/* Request Site specific version */
		AD_DISC_GLOBAL		/* Request global version */
};

ad_disc_t ad_disc_init(void);

void ad_disc_fini(ad_disc_t);

/*
 * The following routines auto discover the specific item
 */
char *
ad_disc_get_DomainName(ad_disc_t ctx, boolean_t *auto_discovered);

idmap_ad_disc_ds_t *
ad_disc_get_DomainController(ad_disc_t ctx,
		enum ad_disc_req req, boolean_t *auto_discovered);

char *
ad_disc_get_SiteName(ad_disc_t ctx, boolean_t *auto_discovered);

char *
ad_disc_get_ForestName(ad_disc_t ctx, boolean_t *auto_discovered);

idmap_ad_disc_ds_t *
ad_disc_get_GlobalCatalog(ad_disc_t ctx, enum ad_disc_req,
				boolean_t *auto_discovered);

ad_disc_trusteddomains_t *
ad_disc_get_TrustedDomains(ad_disc_t ctx,  boolean_t *auto_discovered);

ad_disc_domainsinforest_t *
ad_disc_get_DomainsInForest(ad_disc_t ctx,  boolean_t *auto_discovered);


/*
 * The following routines over ride auto discovery with the
 * specified values
 */
int
ad_disc_set_DomainName(ad_disc_t ctx, const char *domainName);

int
ad_disc_set_DomainController(ad_disc_t ctx,
		const idmap_ad_disc_ds_t *domainController);

int
ad_disc_set_SiteName(ad_disc_t ctx, const char *siteName);

int
ad_disc_set_ForestName(ad_disc_t ctx, const char *forestName);

int
ad_disc_set_GlobalCatalog(ad_disc_t ctx,
		const idmap_ad_disc_ds_t *globalCatalog);


/*
 * This routine forces all auto discovery item to be recomputed
 * on request
 */
void ad_disc_refresh(ad_disc_t);

/* This routine unsets all overridden values */
int ad_disc_unset(ad_disc_t ctx);

/* This routine test for subnet changes */
boolean_t ad_disc_SubnetChanged(ad_disc_t);

/* This routine returns the Time To Live for auto discovered items */
int ad_disc_get_TTL(ad_disc_t);

int ad_disc_compare_ds(idmap_ad_disc_ds_t *ds1, idmap_ad_disc_ds_t *ds2);

int ad_disc_compare_trusteddomains(ad_disc_trusteddomains_t *td1,
		ad_disc_trusteddomains_t *td2);

int ad_disc_compare_domainsinforest(ad_disc_domainsinforest_t *td1,
		ad_disc_domainsinforest_t *td2);

#ifdef __cplusplus
}
#endif

#endif	/* _ADINFO_H */