winbind: Use one queue for all domain children
[samba.git] / source3 / winbindd / winbindd.h
index fce2e46debd14360a8f42a86493819b39b75f7d1..081722f6a901bb9317f6a837af2b55e7ce710096 100644 (file)
@@ -28,8 +28,6 @@
 #include "librpc/gen_ndr/dcerpc.h"
 #include "librpc/gen_ndr/winbind.h"
 
-#include "talloc_dict.h"
-
 #include "../lib/util/tevent_ntstatus.h"
 
 #ifdef HAVE_LIBNSCD
@@ -75,9 +73,8 @@ struct winbindd_cli_state {
 
 struct getpwent_state {
        struct winbindd_domain *domain;
-       int next_user;
-       int num_users;
-       struct wbint_userinfo *users;
+       uint32_t next_user;
+       struct wbint_RidArray rids;
 };
 
 struct getgrent_state {
@@ -87,17 +84,6 @@ struct getgrent_state {
        struct wbint_Principal *groups;
 };
 
-/* Storage for cached getpwent() user entries */
-
-struct getpwent_user {
-       fstring name;                        /* Account name */
-       fstring gecos;                       /* User information */
-       fstring homedir;                     /* User Home Directory */
-       fstring shell;                       /* User Login Shell */
-       struct dom_sid user_sid;                    /* NT user and primary group SIDs */
-       struct dom_sid group_sid;
-};
-
 /* Our connection to the DC */
 
 struct winbindd_cm_conn {
@@ -113,8 +99,7 @@ struct winbindd_cm_conn {
        struct policy_handle lsa_policy;
 
        struct rpc_pipe_client *netlogon_pipe;
-       struct netlogon_creds_cli_context *netlogon_creds;
-       uint32_t netlogon_flags;
+       struct netlogon_creds_cli_context *netlogon_creds_ctx;
        bool netlogon_force_reauth;
 };
 
@@ -153,9 +138,11 @@ struct winbindd_domain {
        char *alt_name;                        /* alt Domain name, if any (FQDN for ADS) */
        char *forest_name;                     /* Name of the AD forest we're in */
        struct dom_sid sid;                           /* SID for this domain */
+       enum netr_SchannelType secure_channel_type;
        uint32_t domain_flags;                   /* Domain flags from netlogon.h */
        uint32_t domain_type;                    /* Domain type from netlogon.h */
        uint32_t domain_trust_attribs;           /* Trust attribs from netlogon.h */
+       struct winbindd_domain *routing_domain;
        bool initialized;                      /* Did we already ask for the domain mode? */
        bool native_mode;                      /* is this a win2k domain in native mode ? */
        bool active_directory;                 /* is this a win2k active directory ? */
@@ -197,6 +184,9 @@ struct winbindd_domain {
 
        struct winbindd_child *children;
 
+       struct tevent_queue *queue;
+       struct dcerpc_binding_handle *binding_handle;
+
        /* Callback we use to try put us back online. */
 
        uint32_t check_online_timeout;
@@ -223,8 +213,7 @@ struct winbindd_methods {
        /* get a list of users, returning a wbint_userinfo for each one */
        NTSTATUS (*query_user_list)(struct winbindd_domain *domain,
                                   TALLOC_CTX *mem_ctx,
-                                  uint32_t *num_entries,
-                                  struct wbint_userinfo **info);
+                                  uint32_t **rids);
 
        /* get a list of domain groups */
        NTSTATUS (*enum_dom_groups)(struct winbindd_domain *domain,
@@ -264,12 +253,6 @@ struct winbindd_methods {
                                  char ***names,
                                  enum lsa_SidType **types);
 
-       /* lookup user info for a given SID */
-       NTSTATUS (*query_user)(struct winbindd_domain *domain, 
-                              TALLOC_CTX *mem_ctx, 
-                              const struct dom_sid *user_sid,
-                              struct wbint_userinfo *user_info);
-
        /* lookup all groups that a user is a member of. The backend
           can also choose to lookup by username or rid for this
           function */