2 import "lsa.idl", "netlogon.idl", "samr.idl", "misc.idl", "security.idl", "idmap.idl";
5 uuid("bf09192c-ed60-4928-9dff-d0d7bcb03ed8"),
7 pointer_default(unique),
9 helpstring("winbind parent-child protocol"),
18 [out] uint32 *out_data
21 NTSTATUS wbint_LookupSid(
23 [out] lsa_SidType *type,
24 [out,string,charset(UTF8)] char **domain,
25 [out,string,charset(UTF8)] char **name
28 NTSTATUS wbint_LookupSids(
29 [in] lsa_SidArray *sids,
30 [out,ref] lsa_RefDomainList *domains,
31 [out,ref] lsa_TransNameArray *names
34 NTSTATUS wbint_LookupName(
35 [in,string,charset(UTF8)] char *domain,
36 [in,string,charset(UTF8)] char *name,
38 [out] lsa_SidType *type,
51 [size_is(num_ids)] wbint_TransID ids[];
54 NTSTATUS wbint_Sids2UnixIDs(
55 [in] lsa_RefDomainList *domains,
56 [in,out] wbint_TransIDArray *ids
59 NTSTATUS wbint_UnixIDs2Sids(
60 [in,string,charset(UTF8)] char *domain_name,
61 [in] dom_sid domain_sid,
63 [in,out] unixid xids[num_ids],
64 [out] dom_sid sids[num_ids]
67 NTSTATUS wbint_AllocateUid(
71 NTSTATUS wbint_AllocateGid(
75 typedef [public] struct {
76 [string,charset(UTF8)] char *domain_name;
77 [string,charset(UTF8)] char *acct_name;
78 [string,charset(UTF8)] char *full_name;
79 [string,charset(UTF8)] char *homedir;
80 [string,charset(UTF8)] char *shell;
83 [string,charset(UTF8)] char *primary_group_name;
88 NTSTATUS wbint_GetNssInfo(
89 [in,out] wbint_userinfo *info
92 typedef [public] struct {
94 [size_is(num_sids)] dom_sid sids[];
97 typedef [public] struct {
99 [size_is(num_rids)] uint32 rids[];
102 NTSTATUS wbint_LookupUserAliases(
103 [in] wbint_SidArray *sids,
104 [out] wbint_RidArray *rids
107 NTSTATUS wbint_LookupUserGroups(
109 [out] wbint_SidArray *sids
112 NTSTATUS wbint_QuerySequenceNumber(
113 [out] uint32 *sequence
116 typedef [public] struct {
119 [string,charset(UTF8)] char *name;
122 typedef [public] struct {
123 uint32 num_principals;
124 [size_is(num_principals)] wbint_Principal principals[];
127 NTSTATUS wbint_LookupGroupMembers(
129 [in] lsa_SidType type,
130 [out] wbint_Principals *members
133 NTSTATUS wbint_LookupAliasMembers(
135 [in] lsa_SidType type,
136 [out] wbint_SidArray *sids
139 typedef [public] struct {
140 uint32 num_userinfos;
141 [size_is(num_userinfos)] wbint_userinfo userinfos[];
144 NTSTATUS wbint_QueryGroupList(
145 [out] wbint_Principals *groups
148 NTSTATUS wbint_QueryUserRidList(
149 [out] wbint_RidArray *rids
152 NTSTATUS wbint_DsGetDcName(
153 [in,string,charset(UTF8)] char *domain_name,
154 [in,unique] GUID *domain_guid,
155 [in,string,unique,charset(UTF8)] char *site_name,
157 [out] netr_DsRGetDCNameInfo **dc_info
160 NTSTATUS wbint_LookupRids(
161 [in] dom_sid *domain_sid,
162 [in] wbint_RidArray *rids,
163 [out,string,charset(UTF8)] char **domain_name,
164 [out] wbint_Principals *names
167 NTSTATUS wbint_CheckMachineAccount(
170 NTSTATUS wbint_ChangeMachineAccount(
171 [in,unique,string,charset(UTF8)] char *dcname
174 NTSTATUS wbint_PingDc(
175 [out,string,charset(UTF8)] char **dcname
178 NTSTATUS wbint_ListTrustedDomains(
179 [in,string,charset(UTF8)] char *client_name,
180 [in] hyper client_pid,
181 [out,ref] netr_DomainTrustList *domains
184 typedef [public] struct {
186 [switch_is(level)] netr_Validation *validation;
187 [string,charset(UTF8)] char *krb5ccname;
190 typedef [public] struct {
191 [string,charset(UTF8)] char *username;
192 [string,charset(UTF8),flag(NDR_SECRET)] char *password;
193 [string,charset(UTF8)] char *krb5_cc_type;
195 } wbint_AuthUserInfo;
197 NTSTATUS wbint_PamAuth(
198 [in,string,charset(UTF8)] char *client_name,
199 [in] hyper client_pid,
201 [in] wbint_AuthUserInfo *info,
202 [in] wbint_SidArray *require_membership_of_sid,
203 [out,ref] wbint_Validation *validation
206 typedef [public] struct {
208 [switch_is(level)] netr_Validation *validation;
209 } wbint_PamAuthCrapValidation;
211 NTSTATUS wbint_PamAuthCrap(
212 [in,string,charset(UTF8)] char *client_name,
213 [in] hyper client_pid,
215 [in, string,charset(UTF8)] char *user,
216 [in, string,charset(UTF8)] char *domain,
217 [in, string,charset(UTF8)] char *workstation,
218 [in,flag(NDR_SECRET)] DATA_BLOB lm_resp,
219 [in,flag(NDR_SECRET)] DATA_BLOB nt_resp,
220 [in,flag(NDR_SECRET)] DATA_BLOB chal,
221 [in] uint32 logon_parameters,
222 [in] wbint_SidArray *require_membership_of_sid,
223 [out,ref] uint8 *authoritative,
224 [out,ref] wbint_PamAuthCrapValidation *validation
227 NTSTATUS wbint_PamLogOff(
228 [in,string,charset(UTF8)] char *client_name,
229 [in] hyper client_pid,
231 [in,string,charset(UTF8)] char *user,
232 [in,string,charset(UTF8)] char *krb5ccname,
236 NTSTATUS wbint_PamAuthCrapChangePassword(
237 [in,string,charset(UTF8)] char *client_name,
238 [in] hyper client_pid,
239 [in,string,charset(UTF8)] char *user,
240 [in,string,charset(UTF8)] char *domain,
241 [in,flag(NDR_SECRET)] DATA_BLOB new_nt_pswd,
242 [in,flag(NDR_SECRET)] DATA_BLOB old_nt_hash_enc,
243 [in,flag(NDR_SECRET)] DATA_BLOB new_lm_pswd,
244 [in,flag(NDR_SECRET)] DATA_BLOB old_lm_hash_enc
247 NTSTATUS wbint_PamAuthChangePassword(
248 [in,string,charset(UTF8)] char *client_name,
249 [in] hyper client_pid,
251 [in,string,charset(UTF8)] char *user,
252 [in,string,charset(UTF8),flag(NDR_SECRET)] char *old_password,
253 [in,string,charset(UTF8),flag(NDR_SECRET)] char *new_password,
254 [out,ref] samr_DomInfo1 **dominfo,
255 [out,ref] samPwdChangeReason *reject_reason
258 typedef [enum16bit] enum {
259 WB_DOMINFO_DOMAIN_UNKNOWN = 0x0000,
260 WB_DOMINFO_DOMAIN_NATIVE = 0x0001,
261 WB_DOMINFO_DOMAIN_AD = 0x0002,
262 WB_DOMINFO_DOMAIN_PRIMARY = 0x0004,
263 WB_DOMINFO_DOMAIN_OFFLINE = 0x0008
266 NTSTATUS wbint_InitConnection(
267 [in,string,charset(UTF8)] char *dcname,
268 [out,string,charset(UTF8)] char **name,
269 [out,string,charset(UTF8)] char **alt_name,
270 [out,ref] dom_sid *sid,
271 [out,ref] DomainInfoFlags *flags
274 /* Public methods available via IRPC */
276 typedef [switch_type(uint16)] union netr_LogonLevel netr_LogonLevel;
277 typedef [switch_type(uint16)] union netr_Validation netr_Validation;
280 * do a netr_LogonSamLogon() against the right DC
282 NTSTATUS winbind_SamLogon(
283 [in] uint16 logon_level,
284 [in] [switch_is(logon_level)] netr_LogonLevel logon,
285 [in] uint16 validation_level,
286 [out] [switch_is(validation_level)] netr_Validation validation,
287 [out] uint8 authoritative
290 NTSTATUS winbind_DsrUpdateReadOnlyServerDnsRecords(
291 [in,unique] [string,charset(UTF16)] uint16 *site_name,
293 [in,out,ref] NL_DNS_NAME_INFO_ARRAY *dns_names
297 * do a netr_LogonControl2Ex() against the right DC
299 typedef [v1_enum] enum netr_LogonControlCode netr_LogonControlCode;
300 typedef [switch_type(netr_LogonControlCode)] union netr_CONTROL_DATA_INFORMATION netr_CONTROL_DATA_INFORMATION;
301 typedef [switch_type(uint32)] union netr_CONTROL_QUERY_INFORMATION netr_CONTROL_QUERY_INFORMATION;
303 WERROR winbind_LogonControl(
304 [in] netr_LogonControlCode function_code,
306 [in,ref][switch_is(function_code)] netr_CONTROL_DATA_INFORMATION *data,
307 [out,ref][switch_is(level)] netr_CONTROL_QUERY_INFORMATION *query
311 * do a netr_GetForestTrustInformation() against the right DC
313 WERROR winbind_GetForestTrustInformation(
314 [in,unique] [string,charset(UTF16)] uint16 *trusted_domain_name,
316 [out,ref] lsa_ForestTrustInformation **forest_trust_info
319 NTSTATUS winbind_SendToSam(
320 [in] netr_SendToSamBase message