winbindd: Call set_dc_type_and_flags on the internal domain
[obnox/samba/samba-obnox.git] / source3 / winbindd / winbindd_proto.h
1 /*
2  * Unix SMB/CIFS implementation.
3  * collected prototypes header
4  *
5  * frozen from "make proto" in May 2008
6  *
7  * Copyright (C) Michael Adam 2008
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 3 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, see <http://www.gnu.org/licenses/>.
21  */
22
23 #ifndef _WINBINDD_PROTO_H_
24 #define _WINBINDD_PROTO_H_
25
26 #include "ads.h"
27
28 /* The following definitions come from winbindd/winbindd.c  */
29 struct messaging_context *winbind_messaging_context(void);
30 void request_error(struct winbindd_cli_state *state);
31 void request_ok(struct winbindd_cli_state *state);
32 bool winbindd_setup_sig_term_handler(bool parent);
33 bool winbindd_setup_stdin_handler(bool parent, bool foreground);
34 bool winbindd_setup_sig_hup_handler(const char *lfile);
35 bool winbindd_use_idmap_cache(void);
36 bool winbindd_use_cache(void);
37 char *get_winbind_priv_pipe_dir(void);
38 struct tevent_context *winbind_event_context(void);
39
40 /* The following definitions come from winbindd/winbindd_ads.c  */
41
42 /* The following definitions come from winbindd/winbindd_rpc.c  */
43
44 NTSTATUS winbindd_lookup_sids(TALLOC_CTX *mem_ctx,
45                               struct winbindd_domain *domain,
46                               uint32_t num_sids,
47                               const struct dom_sid *sids,
48                               char ***domains,
49                               char ***names,
50                               enum lsa_SidType **types);
51 NTSTATUS rpc_lookup_sids(TALLOC_CTX *mem_ctx,
52                          struct winbindd_domain *domain,
53                          struct lsa_SidArray *sids,
54                          struct lsa_RefDomainList **pdomains,
55                          struct lsa_TransNameArray **pnames);
56
57 /* The following definitions come from winbindd/winbindd_cache.c  */
58
59 NTSTATUS wcache_cached_creds_exist(struct winbindd_domain *domain, const struct dom_sid *sid);
60 NTSTATUS wcache_get_creds(struct winbindd_domain *domain, 
61                           TALLOC_CTX *mem_ctx, 
62                           const struct dom_sid *sid,
63                           const uint8 **cached_nt_pass,
64                           const uint8 **cached_salt);
65 NTSTATUS wcache_save_creds(struct winbindd_domain *domain, 
66                            const struct dom_sid *sid,
67                            const uint8 nt_pass[NT_HASH_LEN]);
68 void wcache_invalidate_samlogon(struct winbindd_domain *domain, 
69                                 const struct dom_sid *user_sid);
70 bool wcache_invalidate_cache(void);
71 bool wcache_invalidate_cache_noinit(void);
72 bool init_wcache(void);
73 bool initialize_winbindd_cache(void);
74 void close_winbindd_cache(void);
75 NTSTATUS wcache_sid_to_name(struct winbindd_domain *domain,
76                             const struct dom_sid *sid,
77                             TALLOC_CTX *mem_ctx,
78                             char **domain_name,
79                             char **name,
80                             enum lsa_SidType *type);
81 NTSTATUS wcache_lookup_groupmem(struct winbindd_domain *domain,
82                                 TALLOC_CTX *mem_ctx,
83                                 const struct dom_sid *group_sid,
84                                 uint32_t *num_names,
85                                 struct dom_sid **sid_mem, char ***names,
86                                 uint32_t **name_types);
87 bool lookup_cached_sid(TALLOC_CTX *mem_ctx, const struct dom_sid *sid,
88                        char **domain_name, char **name,
89                        enum lsa_SidType *type);
90 bool lookup_cached_name(const char *domain_name,
91                         const char *name,
92                         struct dom_sid *sid,
93                         enum lsa_SidType *type);
94 void cache_name2sid(struct winbindd_domain *domain, 
95                     const char *domain_name, const char *name,
96                     enum lsa_SidType type, const struct dom_sid *sid);
97 NTSTATUS wcache_name_to_sid(struct winbindd_domain *domain,
98                             const char *domain_name,
99                             const char *name,
100                             struct dom_sid *sid,
101                             enum lsa_SidType *type);
102 NTSTATUS wcache_query_user(struct winbindd_domain *domain,
103                            TALLOC_CTX *mem_ctx,
104                            const struct dom_sid *user_sid,
105                            struct wbint_userinfo *info);
106 NTSTATUS wcache_lookup_useraliases(struct winbindd_domain *domain,
107                                    TALLOC_CTX *mem_ctx,
108                                    uint32 num_sids, const struct dom_sid *sids,
109                                    uint32 *pnum_aliases, uint32 **paliases);
110 NTSTATUS wcache_lookup_usergroups(struct winbindd_domain *domain,
111                                   TALLOC_CTX *mem_ctx,
112                                   const struct dom_sid *user_sid,
113                                   uint32_t *pnum_sids,
114                                   struct dom_sid **psids);
115
116 void wcache_flush_cache(void);
117 NTSTATUS wcache_count_cached_creds(struct winbindd_domain *domain, int *count);
118 NTSTATUS wcache_remove_oldest_cached_creds(struct winbindd_domain *domain, const struct dom_sid *sid) ;
119 bool set_global_winbindd_state_offline(void);
120 void set_global_winbindd_state_online(void);
121 bool get_global_winbindd_state_offline(void);
122 int winbindd_validate_cache(void);
123 int winbindd_validate_cache_nobackup(void);
124 bool winbindd_cache_validate_and_initialize(void);
125 bool wcache_tdc_fetch_list( struct winbindd_tdc_domain **domains, size_t *num_domains );
126 bool wcache_tdc_add_domain( struct winbindd_domain *domain );
127 struct winbindd_tdc_domain * wcache_tdc_fetch_domain( TALLOC_CTX *ctx, const char *name );
128 struct winbindd_tdc_domain* wcache_tdc_fetch_domainbysid(TALLOC_CTX *ctx, const struct dom_sid *sid);
129 void wcache_tdc_clear( void );
130 #ifdef HAVE_ADS
131 struct ads_struct;
132 NTSTATUS nss_get_info_cached( struct winbindd_domain *domain, 
133                               const struct dom_sid *user_sid,
134                               TALLOC_CTX *ctx,
135                               const char **homedir, const char **shell,
136                               const char **gecos, gid_t *p_gid);
137 #endif
138 bool wcache_store_seqnum(const char *domain_name, uint32_t seqnum,
139                          time_t last_seq_check);
140 bool wcache_fetch_ndr(TALLOC_CTX *mem_ctx, struct winbindd_domain *domain,
141                       uint32_t opnum, const DATA_BLOB *req, DATA_BLOB *resp);
142 void wcache_store_ndr(struct winbindd_domain *domain, uint32_t opnum,
143                       const DATA_BLOB *req, const DATA_BLOB *resp);
144
145 /* The following definitions come from winbindd/winbindd_ccache_access.c  */
146
147 void winbindd_ccache_ntlm_auth(struct winbindd_cli_state *state);
148 enum winbindd_result winbindd_dual_ccache_ntlm_auth(struct winbindd_domain *domain,
149                                                 struct winbindd_cli_state *state);
150 void winbindd_ccache_save(struct winbindd_cli_state *state);
151
152 /* The following definitions come from winbindd/winbindd_cm.c  */
153 void winbind_msg_domain_offline(struct messaging_context *msg_ctx,
154                                 void *private_data,
155                                 uint32_t msg_type,
156                                 struct server_id server_id,
157                                 DATA_BLOB *data);
158 void winbind_msg_domain_online(struct messaging_context *msg_ctx,
159                                 void *private_data,
160                                 uint32_t msg_type,
161                                 struct server_id server_id,
162                                 DATA_BLOB *data);
163
164 void set_domain_offline(struct winbindd_domain *domain);
165 void set_domain_online_request(struct winbindd_domain *domain);
166
167 struct ndr_interface_table;
168 NTSTATUS wb_open_internal_pipe(TALLOC_CTX *mem_ctx,
169                                const struct ndr_interface_table *table,
170                                struct rpc_pipe_client **ret_pipe);
171 void invalidate_cm_connection(struct winbindd_cm_conn *conn);
172 void close_conns_after_fork(void);
173 NTSTATUS init_dc_connection(struct winbindd_domain *domain);
174 NTSTATUS cm_connect_sam(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx,
175                         struct rpc_pipe_client **cli, struct policy_handle *sam_handle);
176 NTSTATUS cm_connect_lsa(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx,
177                         struct rpc_pipe_client **cli, struct policy_handle *lsa_policy);
178 NTSTATUS cm_connect_lsa_tcp(struct winbindd_domain *domain,
179                             TALLOC_CTX *mem_ctx,
180                             struct rpc_pipe_client **cli);
181 NTSTATUS cm_connect_lsat(struct winbindd_domain *domain,
182                          TALLOC_CTX *mem_ctx,
183                          struct rpc_pipe_client **cli,
184                          struct policy_handle *lsa_policy);
185 NTSTATUS cm_connect_netlogon(struct winbindd_domain *domain,
186                              struct rpc_pipe_client **cli);
187 bool fetch_current_dc_from_gencache(TALLOC_CTX *mem_ctx,
188                                     const char *domain_name,
189                                     char **p_dc_name, char **p_dc_ip);
190
191 /* The following definitions come from winbindd/winbindd_cred_cache.c  */
192
193 bool ccache_entry_exists(const char *username);
194 bool ccache_entry_identical(const char *username,
195                             uid_t uid,
196                             const char *ccname);
197 void ccache_remove_all_after_fork(void);
198 void ccache_regain_all_now(void);
199 NTSTATUS add_ccache_to_list(const char *princ_name,
200                             const char *ccname,
201                             const char *service,
202                             const char *username,
203                             const char *password,
204                             const char *realm,
205                             uid_t uid,
206                             time_t create_time,
207                             time_t ticket_end,
208                             time_t renew_until,
209                             bool postponed_request);
210 NTSTATUS remove_ccache(const char *username);
211 struct WINBINDD_MEMORY_CREDS *find_memory_creds_by_name(const char *username);
212 NTSTATUS winbindd_add_memory_creds(const char *username,
213                                    uid_t uid,
214                                    const char *pass);
215 NTSTATUS winbindd_delete_memory_creds(const char *username);
216 NTSTATUS winbindd_replace_memory_creds(const char *username,
217                                        const char *pass);
218
219 /* The following definitions come from winbindd/winbindd_creds.c  */
220
221 NTSTATUS winbindd_get_creds(struct winbindd_domain *domain,
222                             TALLOC_CTX *mem_ctx,
223                             const struct dom_sid *sid,
224                             struct netr_SamInfo3 **info3,
225                             const uint8 *cached_nt_pass[NT_HASH_LEN],
226                             const uint8 *cred_salt[NT_HASH_LEN]);
227 NTSTATUS winbindd_store_creds(struct winbindd_domain *domain,
228                               const char *user, 
229                               const char *pass, 
230                               struct netr_SamInfo3 *info3);
231 NTSTATUS winbindd_update_creds_by_info3(struct winbindd_domain *domain,
232                                         const char *user,
233                                         const char *pass,
234                                         struct netr_SamInfo3 *info3);
235 NTSTATUS winbindd_update_creds_by_name(struct winbindd_domain *domain,
236                                        const char *user,
237                                        const char *pass);
238
239 /* The following definitions come from winbindd/winbindd_domain.c  */
240
241 void setup_domain_child(struct winbindd_domain *domain);
242
243 /* The following definitions come from winbindd/winbindd_dual.c  */
244
245 struct dcerpc_binding_handle *dom_child_handle(struct winbindd_domain *domain);
246 struct winbindd_child *choose_domain_child(struct winbindd_domain *domain);
247
248 struct tevent_req *wb_child_request_send(TALLOC_CTX *mem_ctx,
249                                          struct tevent_context *ev,
250                                          struct winbindd_child *child,
251                                          struct winbindd_request *request);
252 int wb_child_request_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
253                           struct winbindd_response **presponse, int *err);
254 struct tevent_req *wb_domain_request_send(TALLOC_CTX *mem_ctx,
255                                           struct tevent_context *ev,
256                                           struct winbindd_domain *domain,
257                                           struct winbindd_request *request);
258 int wb_domain_request_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
259                            struct winbindd_response **presponse, int *err);
260
261 void setup_child(struct winbindd_domain *domain, struct winbindd_child *child,
262                  const struct winbindd_child_dispatch_table *table,
263                  const char *logprefix,
264                  const char *logname);
265 void winbind_child_died(pid_t pid);
266 void winbindd_flush_negative_conn_cache(struct winbindd_domain *domain);
267 void winbind_msg_debug(struct messaging_context *msg_ctx,
268                          void *private_data,
269                          uint32_t msg_type,
270                          struct server_id server_id,
271                          DATA_BLOB *data);
272 void winbind_msg_offline(struct messaging_context *msg_ctx,
273                          void *private_data,
274                          uint32_t msg_type,
275                          struct server_id server_id,
276                          DATA_BLOB *data);
277 void winbind_msg_online(struct messaging_context *msg_ctx,
278                         void *private_data,
279                         uint32_t msg_type,
280                         struct server_id server_id,
281                         DATA_BLOB *data);
282 void winbind_msg_onlinestatus(struct messaging_context *msg_ctx,
283                               void *private_data,
284                               uint32_t msg_type,
285                               struct server_id server_id,
286                               DATA_BLOB *data);
287 void winbind_msg_dump_event_list(struct messaging_context *msg_ctx,
288                                  void *private_data,
289                                  uint32_t msg_type,
290                                  struct server_id server_id,
291                                  DATA_BLOB *data);
292 void winbind_msg_dump_domain_list(struct messaging_context *msg_ctx,
293                                   void *private_data,
294                                   uint32_t msg_type,
295                                   struct server_id server_id,
296                                   DATA_BLOB *data);
297 void winbind_msg_ip_dropped(struct messaging_context *msg_ctx,
298                             void *private_data,
299                             uint32_t msg_type,
300                             struct server_id server_id,
301                             DATA_BLOB *data);
302 void winbind_msg_ip_dropped_parent(struct messaging_context *msg_ctx,
303                                    void *private_data,
304                                    uint32_t msg_type,
305                                    struct server_id server_id,
306                                    DATA_BLOB *data);
307 NTSTATUS winbindd_reinit_after_fork(const struct winbindd_child *myself,
308                                     const char *logfilename);
309 struct winbindd_domain *wb_child_domain(void);
310
311 /* The following definitions come from winbindd/winbindd_group.c  */
312
313 void winbindd_getgrnam(struct winbindd_cli_state *state);
314 void winbindd_getgrgid(struct winbindd_cli_state *state);
315 void winbindd_setgrent(struct winbindd_cli_state *state);
316 void winbindd_endgrent(struct winbindd_cli_state *state);
317 void winbindd_getgrent(struct winbindd_cli_state *state);
318 void winbindd_list_groups(struct winbindd_cli_state *state);
319 void winbindd_getgroups(struct winbindd_cli_state *state);
320 void winbindd_getusersids(struct winbindd_cli_state *state);
321 void winbindd_getuserdomgroups(struct winbindd_cli_state *state);
322 void winbindd_getsidaliases(struct winbindd_cli_state *state);
323 bool fill_grent(TALLOC_CTX *mem_ctx, struct winbindd_gr *gr,
324                 const char *dom_name, const char *gr_name, gid_t unix_gid);
325 NTSTATUS winbindd_print_groupmembers(struct talloc_dict *members,
326                                      TALLOC_CTX *mem_ctx,
327                                      int *num_members, char **result);
328
329
330 /* The following definitions come from winbindd/winbindd_idmap.c  */
331
332 void init_idmap_child(void);
333 struct winbindd_child *idmap_child(void);
334 struct idmap_domain *idmap_find_domain_with_sid(const char *domname,
335                                                 const struct dom_sid *sid);
336
337 /* The following definitions come from winbindd/winbindd_locator.c  */
338
339 void init_locator_child(void);
340 struct winbindd_child *locator_child(void);
341
342 /* The following definitions come from winbindd/winbindd_misc.c  */
343
344 void winbindd_list_trusted_domains(struct winbindd_cli_state *state);
345 enum winbindd_result winbindd_dual_list_trusted_domains(struct winbindd_domain *domain,
346                                                         struct winbindd_cli_state *state);
347 void winbindd_show_sequence(struct winbindd_cli_state *state);
348 void winbindd_domain_info(struct winbindd_cli_state *state);
349 void winbindd_dc_info(struct winbindd_cli_state *state);
350 void winbindd_ping(struct winbindd_cli_state *state);
351 void winbindd_info(struct winbindd_cli_state *state);
352 void winbindd_interface_version(struct winbindd_cli_state *state);
353 void winbindd_domain_name(struct winbindd_cli_state *state);
354 void winbindd_netbios_name(struct winbindd_cli_state *state);
355 void winbindd_priv_pipe_dir(struct winbindd_cli_state *state);
356
357 /* The following definitions come from winbindd/winbindd_ndr.c  */
358 struct ndr_print;
359 void ndr_print_winbindd_child(struct ndr_print *ndr,
360                               const char *name,
361                               const struct winbindd_child *r);
362 void ndr_print_winbindd_cm_conn(struct ndr_print *ndr,
363                                 const char *name,
364                                 const struct winbindd_cm_conn *r);
365 void ndr_print_winbindd_methods(struct ndr_print *ndr,
366                                 const char *name,
367                                 const struct winbindd_methods *r);
368 void ndr_print_winbindd_domain(struct ndr_print *ndr,
369                                const char *name,
370                                const struct winbindd_domain *r);
371
372 /* The following definitions come from winbindd/winbindd_pam.c  */
373
374 bool check_request_flags(uint32_t flags);
375 NTSTATUS append_auth_data(TALLOC_CTX *mem_ctx,
376                           struct winbindd_response *resp,
377                           uint32_t request_flags,
378                           struct netr_SamInfo3 *info3,
379                           const char *name_domain,
380                           const char *name_user);
381 uid_t get_uid_from_request(struct winbindd_request *request);
382 struct winbindd_domain *find_auth_domain(uint8_t flags,
383                                          const char *domain_name);
384 enum winbindd_result winbindd_dual_pam_auth(struct winbindd_domain *domain,
385                                             struct winbindd_cli_state *state) ;
386 enum winbindd_result winbindd_dual_pam_auth_crap(struct winbindd_domain *domain,
387                                                  struct winbindd_cli_state *state) ;
388 enum winbindd_result winbindd_dual_pam_chauthtok(struct winbindd_domain *contact_domain,
389                                                  struct winbindd_cli_state *state);
390 enum winbindd_result winbindd_dual_pam_logoff(struct winbindd_domain *domain,
391                                               struct winbindd_cli_state *state) ;
392 enum winbindd_result winbindd_dual_pam_chng_pswd_auth_crap(struct winbindd_domain *domainSt, struct winbindd_cli_state *state);
393 NTSTATUS winbindd_pam_auth_pac_send(struct winbindd_cli_state *state,
394                                     struct netr_SamInfo3 **info3);
395
396 /* The following definitions come from winbindd/winbindd_util.c  */
397
398 struct winbindd_domain *domain_list(void);
399 bool domain_is_forest_root(const struct winbindd_domain *domain);
400 void rescan_trusted_domains(struct tevent_context *ev, struct tevent_timer *te,
401                             struct timeval now, void *private_data);
402 enum winbindd_result winbindd_dual_init_connection(struct winbindd_domain *domain,
403                                                    struct winbindd_cli_state *state);
404 bool init_domain_list(void);
405 struct winbindd_domain *find_domain_from_name_noinit(const char *domain_name);
406 struct winbindd_domain *find_domain_from_name(const char *domain_name);
407 struct winbindd_domain *find_domain_from_sid_noinit(const struct dom_sid *sid);
408 struct winbindd_domain *find_domain_from_sid(const struct dom_sid *sid);
409 struct winbindd_domain *find_our_domain(void);
410 struct winbindd_domain *find_root_domain(void);
411 struct winbindd_domain *find_builtin_domain(void);
412 struct winbindd_domain *find_lookup_domain_from_sid(const struct dom_sid *sid);
413 struct winbindd_domain *find_lookup_domain_from_name(const char *domain_name);
414 bool parse_domain_user(const char *domuser, fstring domain, fstring user);
415 bool parse_domain_user_talloc(TALLOC_CTX *mem_ctx, const char *domuser,
416                               char **domain, char **user);
417 bool canonicalize_username(fstring username_inout, fstring domain, fstring user);
418 void fill_domain_username(fstring name, const char *domain, const char *user, bool can_assume);
419 char *fill_domain_username_talloc(TALLOC_CTX *ctx,
420                                   const char *domain,
421                                   const char *user,
422                                   bool can_assume);
423 struct winbindd_cli_state *winbindd_client_list(void);
424 void winbindd_add_client(struct winbindd_cli_state *cli);
425 void winbindd_remove_client(struct winbindd_cli_state *cli);
426 int winbindd_num_clients(void);
427 NTSTATUS lookup_usergroups_cached(struct winbindd_domain *domain,
428                                   TALLOC_CTX *mem_ctx,
429                                   const struct dom_sid *user_sid,
430                                   uint32 *p_num_groups, struct dom_sid **user_sids);
431
432 NTSTATUS normalize_name_map(TALLOC_CTX *mem_ctx,
433                              struct winbindd_domain *domain,
434                              const char *name,
435                              char **normalized);
436 NTSTATUS normalize_name_unmap(TALLOC_CTX *mem_ctx,
437                               char *name,
438                               char **normalized);
439
440 NTSTATUS resolve_username_to_alias(TALLOC_CTX *mem_ctx,
441                                    struct winbindd_domain *domain,
442                                    const char *name, char **alias);
443 NTSTATUS resolve_alias_to_username(TALLOC_CTX *mem_ctx,
444                                    struct winbindd_domain *domain,
445                                    const char *alias, char **name);
446
447 bool winbindd_can_contact_domain(struct winbindd_domain *domain);
448 bool winbindd_internal_child(struct winbindd_child *child);
449 void winbindd_set_locator_kdc_envs(const struct winbindd_domain *domain);
450 void winbindd_unset_locator_kdc_env(const struct winbindd_domain *domain);
451 void winbindd_set_locator_kdc_envs(const struct winbindd_domain *domain);
452 void winbindd_unset_locator_kdc_env(const struct winbindd_domain *domain);
453 void set_auth_errors(struct winbindd_response *resp, NTSTATUS result);
454 bool is_domain_offline(const struct winbindd_domain *domain);
455 bool is_domain_online(const struct winbindd_domain *domain);
456 bool parse_sidlist(TALLOC_CTX *mem_ctx, const char *sidstr,
457                    struct dom_sid **sids, uint32_t *num_sids);
458
459 /* The following definitions come from winbindd/winbindd_wins.c  */
460
461 void winbindd_wins_byname(struct winbindd_cli_state *state);
462
463 struct tevent_req *wb_ping_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
464                                 struct winbindd_cli_state *cli,
465                                 struct winbindd_request *request);
466 NTSTATUS wb_ping_recv(struct tevent_req *req,
467                       struct winbindd_response *resp);
468
469 enum winbindd_result winbindd_dual_ping(struct winbindd_domain *domain,
470                                         struct winbindd_cli_state *state);
471
472 struct dcerpc_binding_handle *wbint_binding_handle(TALLOC_CTX *mem_ctx,
473                                                 struct winbindd_domain *domain,
474                                                 struct winbindd_child *child);
475 enum winbindd_result winbindd_dual_ndrcmd(struct winbindd_domain *domain,
476                                           struct winbindd_cli_state *state);
477
478 struct tevent_req *wb_lookupsid_send(TALLOC_CTX *mem_ctx,
479                                      struct tevent_context *ev,
480                                      const struct dom_sid *sid);
481 NTSTATUS wb_lookupsid_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
482                            enum lsa_SidType *type, const char **domain,
483                            const char **name);
484
485 struct tevent_req *winbindd_lookupsid_send(TALLOC_CTX *mem_ctx,
486                                            struct tevent_context *ev,
487                                            struct winbindd_cli_state *cli,
488                                            struct winbindd_request *request);
489 NTSTATUS winbindd_lookupsid_recv(struct tevent_req *req,
490                                  struct winbindd_response *response);
491
492 struct tevent_req *winbindd_lookupsids_send(TALLOC_CTX *mem_ctx,
493                                             struct tevent_context *ev,
494                                             struct winbindd_cli_state *cli,
495                                             struct winbindd_request *request);
496 NTSTATUS winbindd_lookupsids_recv(struct tevent_req *req,
497                                   struct winbindd_response *response);
498
499 struct tevent_req *wb_lookupname_send(TALLOC_CTX *mem_ctx,
500                                       struct tevent_context *ev,
501                                       const char *dom_name, const char *name,
502                                       uint32_t flags);
503 NTSTATUS wb_lookupname_recv(struct tevent_req *req, struct dom_sid *sid,
504                             enum lsa_SidType *type);
505
506 struct tevent_req *winbindd_lookupname_send(TALLOC_CTX *mem_ctx,
507                                             struct tevent_context *ev,
508                                             struct winbindd_cli_state *cli,
509                                             struct winbindd_request *request);
510 NTSTATUS winbindd_lookupname_recv(struct tevent_req *req,
511                                   struct winbindd_response *response);
512
513 struct tevent_req *winbindd_sid_to_uid_send(TALLOC_CTX *mem_ctx,
514                                             struct tevent_context *ev,
515                                             struct winbindd_cli_state *cli,
516                                             struct winbindd_request *request);
517 NTSTATUS winbindd_sid_to_uid_recv(struct tevent_req *req,
518                                   struct winbindd_response *response);
519
520 struct tevent_req *winbindd_sid_to_gid_send(TALLOC_CTX *mem_ctx,
521                                             struct tevent_context *ev,
522                                             struct winbindd_cli_state *cli,
523                                             struct winbindd_request *request);
524 NTSTATUS winbindd_sid_to_gid_recv(struct tevent_req *req,
525                                   struct winbindd_response *response);
526
527 struct tevent_req *wb_uid2sid_send(TALLOC_CTX *mem_ctx,
528                                    struct tevent_context *ev,
529                                    uid_t uid);
530 NTSTATUS wb_uid2sid_recv(struct tevent_req *req, struct dom_sid *sid);
531
532 struct tevent_req *winbindd_uid_to_sid_send(TALLOC_CTX *mem_ctx,
533                                             struct tevent_context *ev,
534                                             struct winbindd_cli_state *cli,
535                                             struct winbindd_request *request);
536 NTSTATUS winbindd_uid_to_sid_recv(struct tevent_req *req,
537                                   struct winbindd_response *response);
538
539 struct tevent_req *wb_gid2sid_send(TALLOC_CTX *mem_ctx,
540                                    struct tevent_context *ev,
541                                    gid_t gid);
542 NTSTATUS wb_gid2sid_recv(struct tevent_req *req, struct dom_sid *sid);
543
544 struct tevent_req *winbindd_gid_to_sid_send(TALLOC_CTX *mem_ctx,
545                                             struct tevent_context *ev,
546                                             struct winbindd_cli_state *cli,
547                                             struct winbindd_request *request);
548 NTSTATUS winbindd_gid_to_sid_recv(struct tevent_req *req,
549                                   struct winbindd_response *response);
550
551 struct tevent_req *winbindd_allocate_uid_send(TALLOC_CTX *mem_ctx,
552                                               struct tevent_context *ev,
553                                               struct winbindd_cli_state *cli,
554                                               struct winbindd_request *request);
555 NTSTATUS winbindd_allocate_uid_recv(struct tevent_req *req,
556                                     struct winbindd_response *response);
557
558 struct tevent_req *winbindd_allocate_gid_send(TALLOC_CTX *mem_ctx,
559                                               struct tevent_context *ev,
560                                               struct winbindd_cli_state *cli,
561                                               struct winbindd_request *request);
562 NTSTATUS winbindd_allocate_gid_recv(struct tevent_req *req,
563                                     struct winbindd_response *response);
564
565 struct tevent_req *wb_queryuser_send(TALLOC_CTX *mem_ctx,
566                                      struct tevent_context *ev,
567                                      const struct dom_sid *user_sid);
568 NTSTATUS wb_queryuser_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
569                            struct wbint_userinfo **pinfo);
570
571 struct tevent_req *wb_getpwsid_send(TALLOC_CTX *mem_ctx,
572                                     struct tevent_context *ev,
573                                     const struct dom_sid *user_sid,
574                                     struct winbindd_pw *pw);
575 NTSTATUS wb_getpwsid_recv(struct tevent_req *req);
576
577 struct tevent_req *winbindd_getpwsid_send(TALLOC_CTX *mem_ctx,
578                                           struct tevent_context *ev,
579                                           struct winbindd_cli_state *cli,
580                                           struct winbindd_request *request);
581 NTSTATUS winbindd_getpwsid_recv(struct tevent_req *req,
582                                 struct winbindd_response *response);
583
584 struct tevent_req *winbindd_getpwnam_send(TALLOC_CTX *mem_ctx,
585                                           struct tevent_context *ev,
586                                           struct winbindd_cli_state *cli,
587                                           struct winbindd_request *request);
588 NTSTATUS winbindd_getpwnam_recv(struct tevent_req *req,
589                                 struct winbindd_response *response);
590
591 struct tevent_req *winbindd_getpwuid_send(TALLOC_CTX *mem_ctx,
592                                           struct tevent_context *ev,
593                                           struct winbindd_cli_state *cli,
594                                           struct winbindd_request *request);
595 NTSTATUS winbindd_getpwuid_recv(struct tevent_req *req,
596                                 struct winbindd_response *response);
597 struct tevent_req *wb_lookupuseraliases_send(TALLOC_CTX *mem_ctx,
598                                              struct tevent_context *ev,
599                                              struct winbindd_domain *domain,
600                                              int num_sids,
601                                              const struct dom_sid *sids);
602 NTSTATUS wb_lookupuseraliases_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
603                                    uint32_t *num_aliases, uint32_t **aliases);
604 struct tevent_req *winbindd_getsidaliases_send(TALLOC_CTX *mem_ctx,
605                                                struct tevent_context *ev,
606                                                struct winbindd_cli_state *cli,
607                                                struct winbindd_request *request);
608 NTSTATUS winbindd_getsidaliases_recv(struct tevent_req *req,
609                                      struct winbindd_response *response);
610 struct tevent_req *wb_lookupusergroups_send(TALLOC_CTX *mem_ctx,
611                                             struct tevent_context *ev,
612                                             struct winbindd_domain *domain,
613                                             const struct dom_sid *sid);
614 NTSTATUS wb_lookupusergroups_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
615                                   int *num_sids, struct dom_sid **sids);
616
617 struct tevent_req *winbindd_getuserdomgroups_send(TALLOC_CTX *mem_ctx,
618                                                   struct tevent_context *ev,
619                                                   struct winbindd_cli_state *cli,
620                                                   struct winbindd_request *request);
621 NTSTATUS winbindd_getuserdomgroups_recv(struct tevent_req *req,
622                                         struct winbindd_response *response);
623 struct tevent_req *wb_gettoken_send(TALLOC_CTX *mem_ctx,
624                                     struct tevent_context *ev,
625                                     const struct dom_sid *sid);
626 NTSTATUS wb_gettoken_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
627                           int *num_sids, struct dom_sid **sids);
628 struct tevent_req *winbindd_getgroups_send(TALLOC_CTX *mem_ctx,
629                                            struct tevent_context *ev,
630                                            struct winbindd_cli_state *cli,
631                                            struct winbindd_request *request);
632 NTSTATUS winbindd_getgroups_recv(struct tevent_req *req,
633                                  struct winbindd_response *response);
634
635 struct tevent_req *wb_seqnum_send(TALLOC_CTX *mem_ctx,
636                                   struct tevent_context *ev,
637                                   struct winbindd_domain *domain);
638 NTSTATUS wb_seqnum_recv(struct tevent_req *req, uint32_t *seqnum);
639
640 struct tevent_req *wb_seqnums_send(TALLOC_CTX *mem_ctx,
641                                    struct tevent_context *ev);
642 NTSTATUS wb_seqnums_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
643                          int *num_domains, struct winbindd_domain ***domains,
644                          NTSTATUS **stati, uint32_t **seqnums);
645
646 struct tevent_req *winbindd_show_sequence_send(TALLOC_CTX *mem_ctx,
647                                                struct tevent_context *ev,
648                                                struct winbindd_cli_state *cli,
649                                                struct winbindd_request *request);
650 NTSTATUS winbindd_show_sequence_recv(struct tevent_req *req,
651                                      struct winbindd_response *response);
652
653 struct tevent_req *wb_group_members_send(TALLOC_CTX *mem_ctx,
654                                          struct tevent_context *ev,
655                                          const struct dom_sid *sid,
656                                          enum lsa_SidType type,
657                                          int max_depth);
658 NTSTATUS wb_group_members_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
659                                struct talloc_dict **members);
660 NTSTATUS add_wbint_Principal_to_dict(TALLOC_CTX *mem_ctx,
661                                      struct dom_sid *sid,
662                                      const char **name,
663                                      enum lsa_SidType type,
664                                      struct talloc_dict *dict);
665
666 struct tevent_req *wb_getgrsid_send(TALLOC_CTX *mem_ctx,
667                                     struct tevent_context *ev,
668                                     const struct dom_sid *group_sid,
669                                     int max_nesting);
670 NTSTATUS wb_getgrsid_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
671                           const char **domname, const char **name, gid_t *gid,
672                           struct talloc_dict **members);
673
674 struct tevent_req *winbindd_getgrgid_send(TALLOC_CTX *mem_ctx,
675                                           struct tevent_context *ev,
676                                           struct winbindd_cli_state *cli,
677                                           struct winbindd_request *request);
678 NTSTATUS winbindd_getgrgid_recv(struct tevent_req *req,
679                                 struct winbindd_response *response);
680
681 struct tevent_req *winbindd_getgrnam_send(TALLOC_CTX *mem_ctx,
682                                           struct tevent_context *ev,
683                                           struct winbindd_cli_state *cli,
684                                           struct winbindd_request *request);
685 NTSTATUS winbindd_getgrnam_recv(struct tevent_req *req,
686                                 struct winbindd_response *response);
687
688 struct tevent_req *winbindd_getusersids_send(TALLOC_CTX *mem_ctx,
689                                              struct tevent_context *ev,
690                                              struct winbindd_cli_state *cli,
691                                              struct winbindd_request *request);
692 NTSTATUS winbindd_getusersids_recv(struct tevent_req *req,
693                                    struct winbindd_response *response);
694
695 struct tevent_req *winbindd_lookuprids_send(TALLOC_CTX *mem_ctx,
696                                             struct tevent_context *ev,
697                                             struct winbindd_cli_state *cli,
698                                             struct winbindd_request *request);
699 NTSTATUS winbindd_lookuprids_recv(struct tevent_req *req,
700                                   struct winbindd_response *response);
701
702 struct tevent_req *wb_query_user_list_send(TALLOC_CTX *mem_ctx,
703                                            struct tevent_context *ev,
704                                            struct winbindd_domain *domain);
705 NTSTATUS wb_query_user_list_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
706                                  int *num_users,
707                                  struct wbint_userinfo **users);
708
709 struct tevent_req *wb_fill_pwent_send(TALLOC_CTX *mem_ctx,
710                                       struct tevent_context *ev,
711                                       struct wbint_userinfo *info,
712                                       struct winbindd_pw *pw);
713 NTSTATUS wb_fill_pwent_recv(struct tevent_req *req);
714
715 struct tevent_req *wb_next_pwent_send(TALLOC_CTX *mem_ctx,
716                                       struct tevent_context *ev,
717                                       struct getpwent_state *gstate,
718                                       struct winbindd_pw *pw);
719 NTSTATUS wb_next_pwent_recv(struct tevent_req *req);
720
721 struct tevent_req *winbindd_setpwent_send(TALLOC_CTX *mem_ctx,
722                                           struct tevent_context *ev,
723                                           struct winbindd_cli_state *cli,
724                                           struct winbindd_request *request);
725 NTSTATUS winbindd_setpwent_recv(struct tevent_req *req,
726                                 struct winbindd_response *presp);
727
728 struct tevent_req *winbindd_getpwent_send(TALLOC_CTX *mem_ctx,
729                                           struct tevent_context *ev,
730                                           struct winbindd_cli_state *cli,
731                                           struct winbindd_request *request);
732 NTSTATUS winbindd_getpwent_recv(struct tevent_req *req,
733                                 struct winbindd_response *response);
734
735 struct tevent_req *winbindd_endpwent_send(TALLOC_CTX *mem_ctx,
736                                           struct tevent_context *ev,
737                                           struct winbindd_cli_state *cli,
738                                           struct winbindd_request *request);
739 NTSTATUS winbindd_endpwent_recv(struct tevent_req *req,
740                                 struct winbindd_response *response);
741
742 struct tevent_req *winbindd_dsgetdcname_send(TALLOC_CTX *mem_ctx,
743                                              struct tevent_context *ev,
744                                              struct winbindd_cli_state *cli,
745                                              struct winbindd_request *request);
746 NTSTATUS winbindd_dsgetdcname_recv(struct tevent_req *req,
747                                    struct winbindd_response *response);
748
749 struct tevent_req *wb_dsgetdcname_send(TALLOC_CTX *mem_ctx,
750                                        struct tevent_context *ev,
751                                        const char *domain_name,
752                                        const struct GUID *domain_guid,
753                                        const char *site_name,
754                                        uint32_t flags);
755 NTSTATUS wb_dsgetdcname_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
756                              struct netr_DsRGetDCNameInfo **pdcinfo);
757
758 struct tevent_req *winbindd_getdcname_send(TALLOC_CTX *mem_ctx,
759                                            struct tevent_context *ev,
760                                            struct winbindd_cli_state *cli,
761                                            struct winbindd_request *request);
762 NTSTATUS winbindd_getdcname_recv(struct tevent_req *req,
763                                  struct winbindd_response *response);
764
765 struct tevent_req *wb_next_grent_send(TALLOC_CTX *mem_ctx,
766                                       struct tevent_context *ev,
767                                       int max_nesting,
768                                       struct getgrent_state *gstate,
769                                       struct winbindd_gr *gr);
770 NTSTATUS wb_next_grent_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
771                             struct talloc_dict **members);
772
773 struct tevent_req *winbindd_setgrent_send(TALLOC_CTX *mem_ctx,
774                                           struct tevent_context *ev,
775                                           struct winbindd_cli_state *cli,
776                                           struct winbindd_request *request);
777 NTSTATUS winbindd_setgrent_recv(struct tevent_req *req,
778                                 struct winbindd_response *response);
779 struct tevent_req *winbindd_getgrent_send(TALLOC_CTX *mem_ctx,
780                                           struct tevent_context *ev,
781                                           struct winbindd_cli_state *cli,
782                                           struct winbindd_request *request);
783 NTSTATUS winbindd_getgrent_recv(struct tevent_req *req,
784                                 struct winbindd_response *response);
785 struct tevent_req *winbindd_endgrent_send(TALLOC_CTX *mem_ctx,
786                                           struct tevent_context *ev,
787                                           struct winbindd_cli_state *cli,
788                                           struct winbindd_request *request);
789 NTSTATUS winbindd_endgrent_recv(struct tevent_req *req,
790                                 struct winbindd_response *response);
791
792 struct tevent_req *winbindd_list_users_send(TALLOC_CTX *mem_ctx,
793                                             struct tevent_context *ev,
794                                             struct winbindd_cli_state *cli,
795                                             struct winbindd_request *request);
796 NTSTATUS winbindd_list_users_recv(struct tevent_req *req,
797                                   struct winbindd_response *response);
798
799 struct tevent_req *winbindd_list_groups_send(TALLOC_CTX *mem_ctx,
800                                              struct tevent_context *ev,
801                                              struct winbindd_cli_state *cli,
802                                              struct winbindd_request *request);
803 NTSTATUS winbindd_list_groups_recv(struct tevent_req *req,
804                                    struct winbindd_response *response);
805
806 struct tevent_req *winbindd_check_machine_acct_send(TALLOC_CTX *mem_ctx,
807                                                     struct tevent_context *ev,
808                                                     struct winbindd_cli_state *cli,
809                                                     struct winbindd_request *request);
810 NTSTATUS winbindd_check_machine_acct_recv(struct tevent_req *req,
811                                           struct winbindd_response *presp);
812
813 struct tevent_req *winbindd_ping_dc_send(TALLOC_CTX *mem_ctx,
814                                          struct tevent_context *ev,
815                                          struct winbindd_cli_state *cli,
816                                          struct winbindd_request *request);
817 NTSTATUS winbindd_ping_dc_recv(struct tevent_req *req,
818                                struct winbindd_response *presp);
819
820 struct tevent_req *winbindd_change_machine_acct_send(TALLOC_CTX *mem_ctx,
821                                                      struct tevent_context *ev,
822                                                      struct winbindd_cli_state *cli,
823                                                      struct winbindd_request *request);
824 NTSTATUS winbindd_change_machine_acct_recv(struct tevent_req *req,
825                                            struct winbindd_response *presp);
826
827 struct tevent_req *winbindd_pam_auth_send(TALLOC_CTX *mem_ctx,
828                                           struct tevent_context *ev,
829                                           struct winbindd_cli_state *cli,
830                                           struct winbindd_request *request);
831 NTSTATUS winbindd_pam_auth_recv(struct tevent_req *req,
832                                 struct winbindd_response *response);
833
834 struct tevent_req *winbindd_pam_auth_crap_send(
835         TALLOC_CTX *mem_ctx,
836         struct tevent_context *ev,
837         struct winbindd_cli_state *cli,
838         struct winbindd_request *request);
839 NTSTATUS winbindd_pam_auth_crap_recv(struct tevent_req *req,
840                                      struct winbindd_response *response);
841
842 struct tevent_req *winbindd_pam_chauthtok_send(
843         TALLOC_CTX *mem_ctx,
844         struct tevent_context *ev,
845         struct winbindd_cli_state *cli,
846         struct winbindd_request *request);
847 NTSTATUS winbindd_pam_chauthtok_recv(struct tevent_req *req,
848                                      struct winbindd_response *response);
849
850 struct tevent_req *winbindd_pam_logoff_send(TALLOC_CTX *mem_ctx,
851                                             struct tevent_context *ev,
852                                             struct winbindd_cli_state *cli,
853                                             struct winbindd_request *request);
854 NTSTATUS winbindd_pam_logoff_recv(struct tevent_req *req,
855                                   struct winbindd_response *response);
856
857 struct tevent_req *winbindd_pam_chng_pswd_auth_crap_send(
858         TALLOC_CTX *mem_ctx,
859         struct tevent_context *ev,
860         struct winbindd_cli_state *cli,
861         struct winbindd_request *request);
862 NTSTATUS winbindd_pam_chng_pswd_auth_crap_recv(
863         struct tevent_req *req,
864         struct winbindd_response *response);
865
866 struct tevent_req *wb_lookupsids_send(TALLOC_CTX *mem_ctx,
867                                       struct tevent_context *ev,
868                                       struct dom_sid *sids,
869                                       uint32_t num_sids);
870 NTSTATUS wb_lookupsids_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
871                             struct lsa_RefDomainList **domains,
872                             struct lsa_TransNameArray **names);
873
874 struct tevent_req *wb_sids2xids_send(TALLOC_CTX *mem_ctx,
875                                      struct tevent_context *ev,
876                                      const struct dom_sid *sids,
877                                      const uint32_t num_sids);
878 NTSTATUS wb_sids2xids_recv(struct tevent_req *req,
879                            struct unixid *xids);
880 struct tevent_req *winbindd_sids_to_xids_send(TALLOC_CTX *mem_ctx,
881                                               struct tevent_context *ev,
882                                               struct winbindd_cli_state *cli,
883                                               struct winbindd_request *request);
884 NTSTATUS winbindd_sids_to_xids_recv(struct tevent_req *req,
885                                     struct winbindd_response *response);
886 struct tevent_req *winbindd_wins_byip_send(TALLOC_CTX *mem_ctx,
887                                            struct tevent_context *ev,
888                                            struct winbindd_cli_state *cli,
889                                            struct winbindd_request *request);
890 NTSTATUS winbindd_wins_byip_recv(struct tevent_req *req,
891                                  struct winbindd_response *presp);
892 struct tevent_req *winbindd_wins_byname_send(TALLOC_CTX *mem_ctx,
893                                              struct tevent_context *ev,
894                                              struct winbindd_cli_state *cli,
895                                              struct winbindd_request *request);
896 NTSTATUS winbindd_wins_byname_recv(struct tevent_req *req,
897                                    struct winbindd_response *presp);
898
899
900 /* The following definitions come from winbindd/winbindd_samr.c  */
901
902 NTSTATUS open_internal_samr_conn(TALLOC_CTX *mem_ctx,
903                                  struct winbindd_domain *domain,
904                                  struct rpc_pipe_client **samr_pipe,
905                                  struct policy_handle *samr_domain_hnd);
906
907 /* The following definitions come from winbindd/winbindd_ads.c  */
908 ADS_STATUS ads_idmap_cached_connection(ADS_STRUCT **adsp, const char *dom_name);
909
910 #endif /*  _WINBINDD_PROTO_H_  */