Error when private libraries have public headers.
[obnox/samba/samba-obnox.git] / librpc / idl / winbind.idl
1 #include "idl_types.h"
2 import "lsa.idl", "netlogon.idl", "misc.idl", "security.idl", "idmap.idl";
3
4 [
5     uuid("bf09192c-ed60-4928-9dff-d0d7bcb03ed8"),
6     endpoint("ncalrpc:"),
7     pointer_default(unique),
8     version(1.0),
9     helpstring("winbind parent-child protocol"),
10     no_srv_register
11 ]
12 interface winbind
13 {
14   /* Private methods */
15
16     void wbint_Ping(
17         [in] uint32 in_data,
18         [out] uint32 *out_data
19         );
20
21     NTSTATUS wbint_LookupSid(
22         [in] dom_sid *sid,
23         [out] lsa_SidType *type,
24         [out,string,charset(UTF8)] char **domain,
25         [out,string,charset(UTF8)] char **name
26         );
27
28     NTSTATUS wbint_LookupSids(
29         [in] lsa_SidArray *sids,
30         [out,ref] lsa_RefDomainList *domains,
31         [out,ref] lsa_TransNameArray *names
32         );
33
34     NTSTATUS wbint_LookupName(
35         [in,string,charset(UTF8)] char *domain,
36         [in,string,charset(UTF8)] char *name,
37         [in] uint32 flags,
38         [out] lsa_SidType *type,
39         [out] dom_sid *sid
40         );
41
42     typedef struct {
43         id_type type;
44         uint32 domain_index;
45         uint32 rid;
46         unixid xid;
47     } wbint_TransID;
48
49     typedef struct {
50         uint32 num_ids;
51         [size_is(num_ids)] wbint_TransID ids[];
52     } wbint_TransIDArray;
53
54     NTSTATUS wbint_Sids2UnixIDs(
55         [in] lsa_RefDomainList *domains,
56         [in,out] wbint_TransIDArray *ids
57         );
58
59     NTSTATUS wbint_Uid2Sid(
60         [in] hyper uid,
61         [out] dom_sid *sid
62         );
63
64     NTSTATUS wbint_Gid2Sid(
65         [in] hyper gid,
66         [out] dom_sid *sid
67         );
68
69     NTSTATUS wbint_AllocateUid(
70         [out] hyper *uid
71         );
72
73     NTSTATUS wbint_AllocateGid(
74         [out] hyper *gid
75         );
76
77     typedef [public] struct {
78         [string,charset(UTF8)] char *acct_name;
79         [string,charset(UTF8)] char *full_name;
80         [string,charset(UTF8)] char *homedir;
81         [string,charset(UTF8)] char *shell;
82         hyper primary_gid;
83         dom_sid user_sid;
84         dom_sid group_sid;
85     } wbint_userinfo;
86
87     NTSTATUS wbint_QueryUser(
88         [in] dom_sid *sid,
89         [out] wbint_userinfo *info
90         );
91
92     typedef [public] struct {
93         uint32 num_sids;
94         [size_is(num_sids)] dom_sid sids[];
95     } wbint_SidArray;
96
97     typedef [public] struct {
98         uint32 num_rids;
99         [size_is(num_rids)] uint32 rids[];
100     } wbint_RidArray;
101
102     NTSTATUS wbint_LookupUserAliases(
103         [in] wbint_SidArray *sids,
104         [out] wbint_RidArray *rids
105         );
106
107     NTSTATUS wbint_LookupUserGroups(
108         [in] dom_sid *sid,
109         [out] wbint_SidArray *sids
110         );
111
112     NTSTATUS wbint_QuerySequenceNumber(
113         [out] uint32 *sequence
114         );
115
116     typedef [public] struct {
117         dom_sid sid;
118         lsa_SidType type;
119         [string,charset(UTF8)] char *name;
120     } wbint_Principal;
121
122     typedef [public] struct {
123         int num_principals;
124         [size_is(num_principals)] wbint_Principal principals[];
125     } wbint_Principals;
126
127     NTSTATUS wbint_LookupGroupMembers(
128         [in] dom_sid *sid,
129         [in] lsa_SidType type,
130         [out] wbint_Principals *members
131         );
132
133     typedef [public] struct {
134         uint32 num_userinfos;
135         [size_is(num_userinfos)] wbint_userinfo userinfos[];
136     } wbint_userinfos;
137
138     NTSTATUS wbint_QueryUserList(
139         [out] wbint_userinfos *users
140         );
141
142     NTSTATUS wbint_QueryGroupList(
143         [out] wbint_Principals *groups
144         );
145
146     NTSTATUS wbint_DsGetDcName(
147         [in,string,charset(UTF8)]               char *domain_name,
148         [in,unique]                             GUID *domain_guid,
149         [in,string,unique,charset(UTF8)]        char *site_name,
150         [in]                                    uint32 flags,
151         [out]                                   netr_DsRGetDCNameInfo **dc_info
152         );
153
154     NTSTATUS wbint_LookupRids(
155         [in] dom_sid *domain_sid,
156         [in] wbint_RidArray *rids,
157         [out,string,charset(UTF8)] char **domain_name,
158         [out] wbint_Principals *names
159         );
160
161     NTSTATUS wbint_CheckMachineAccount(
162         );
163
164     NTSTATUS wbint_ChangeMachineAccount(
165         );
166
167     NTSTATUS wbint_PingDc(
168         [out,string,charset(UTF8)] char **dcname
169         );
170
171   /* Public methods available via IRPC */
172
173     typedef [switch_type(uint16)] union netr_LogonLevel netr_LogonLevel;
174     typedef [switch_type(uint16)] union netr_Validation netr_Validation;
175
176     /*
177      * do a netr_LogonSamLogon() against the right DC
178      */
179     NTSTATUS winbind_SamLogon(
180         [in]  uint16 logon_level,
181         [in]  [switch_is(logon_level)] netr_LogonLevel logon,
182         [in]  uint16 validation_level,
183         [out] [switch_is(validation_level)] netr_Validation validation,
184         [out] uint8 authoritative
185         );
186
187     NTSTATUS winbind_DsrUpdateReadOnlyServerDnsRecords(
188         [in,unique] [string,charset(UTF16)] uint16 *site_name,
189         [in] uint32 dns_ttl,
190         [in,out,ref] NL_DNS_NAME_INFO_ARRAY *dns_names
191         );
192
193         /*
194          * do a netr_LogonControl2Ex() against the right DC
195          */
196         typedef [v1_enum] enum netr_LogonControlCode netr_LogonControlCode;
197         typedef [switch_type(netr_LogonControlCode)] union netr_CONTROL_DATA_INFORMATION netr_CONTROL_DATA_INFORMATION;
198         typedef [switch_type(uint32)] union netr_CONTROL_QUERY_INFORMATION netr_CONTROL_QUERY_INFORMATION;
199
200         WERROR winbind_LogonControl(
201                 [in]   netr_LogonControlCode function_code,
202                 [in]   uint32 level,
203                 [in,ref][switch_is(function_code)] netr_CONTROL_DATA_INFORMATION  *data,
204                 [out,ref][switch_is(level)] netr_CONTROL_QUERY_INFORMATION *query
205                 );
206
207         /*
208          * do a netr_GetForestTrustInformation() against the right DC
209          */
210         WERROR winbind_GetForestTrustInformation(
211                 [in,unique] [string,charset(UTF16)] uint16 *trusted_domain_name,
212                 [in] uint32 flags,
213                 [out,ref] lsa_ForestTrustInformation **forest_trust_info
214                 );
215 }