s3-winbind: We need to use internal rpc connections in winbind.
[idra/samba.git] / source3 / winbindd / winbindd_samr.c
index f0af251b0ccdc57ef08bf6f5aab0dde7698c8fcf..582e2a696207cbc9ead82cb2e752c7b8b70d78cd 100644 (file)
 #include "includes.h"
 #include "winbindd.h"
 #include "winbindd_rpc.h"
-
+#include "rpc_client/rpc_client.h"
 #include "../librpc/gen_ndr/ndr_samr_c.h"
 #include "rpc_client/cli_samr.h"
-#include "../librpc/gen_ndr/srv_samr.h"
 #include "../librpc/gen_ndr/ndr_lsa_c.h"
 #include "rpc_client/cli_lsarpc.h"
-#include "../librpc/gen_ndr/srv_lsa.h"
 #include "rpc_server/rpc_ncacn_np.h"
 #include "../libcli/security/security.h"
+#include "passdb/machine_sid.h"
+#include "auth.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_WINBIND
@@ -43,24 +43,20 @@ static NTSTATUS open_internal_samr_pipe(TALLOC_CTX *mem_ctx,
                                        struct rpc_pipe_client **samr_pipe)
 {
        struct rpc_pipe_client *cli = NULL;
-       struct auth_serversupplied_info *session_info = NULL;
+       struct auth_session_info *session_info = NULL;
        NTSTATUS status;
 
-       if (cli != NULL) {
-               goto done;
-       }
-
        if (session_info == NULL) {
                status = make_session_info_system(mem_ctx, &session_info);
                if (!NT_STATUS_IS_OK(status)) {
-                       DEBUG(0, ("open_samr_pipe: Could not create auth_serversupplied_info: %s\n",
+                       DEBUG(0, ("open_samr_pipe: Could not create auth_session_info: %s\n",
                                  nt_errstr(status)));
                        return status;
                }
        }
 
        /* create a samr connection */
-       status = rpc_pipe_open_interface(mem_ctx,
+       status = rpc_pipe_open_internal(mem_ctx,
                                        &ndr_table_samr.syntax_id,
                                        session_info,
                                        NULL,
@@ -72,7 +68,6 @@ static NTSTATUS open_internal_samr_pipe(TALLOC_CTX *mem_ctx,
                return status;
        }
 
-done:
        if (samr_pipe) {
                *samr_pipe = cli;
        }
@@ -125,20 +120,20 @@ static NTSTATUS open_internal_lsa_pipe(TALLOC_CTX *mem_ctx,
                                       struct rpc_pipe_client **lsa_pipe)
 {
        struct rpc_pipe_client *cli = NULL;
-       struct auth_serversupplied_info *session_info = NULL;
+       struct auth_session_info *session_info = NULL;
        NTSTATUS status;
 
        if (session_info == NULL) {
                status = make_session_info_system(mem_ctx, &session_info);
                if (!NT_STATUS_IS_OK(status)) {
-                       DEBUG(0, ("open_lsa_pipe: Could not create auth_serversupplied_info: %s\n",
+                       DEBUG(0, ("open_lsa_pipe: Could not create auth_session_info: %s\n",
                                  nt_errstr(status)));
                        return status;
                }
        }
 
        /* create a lsa connection */
-       status = rpc_pipe_open_interface(mem_ctx,
+       status = rpc_pipe_open_internal(mem_ctx,
                                        &ndr_table_lsarpc.syntax_id,
                                        session_info,
                                        NULL,
@@ -150,7 +145,6 @@ static NTSTATUS open_internal_lsa_pipe(TALLOC_CTX *mem_ctx,
                return status;
        }
 
-done:
        if (lsa_pipe) {
                *lsa_pipe = cli;
        }
@@ -186,11 +180,11 @@ static NTSTATUS open_internal_lsa_conn(TALLOC_CTX *mem_ctx,
 static NTSTATUS sam_enum_dom_groups(struct winbindd_domain *domain,
                                    TALLOC_CTX *mem_ctx,
                                    uint32_t *pnum_info,
-                                   struct acct_info **pinfo)
+                                   struct wb_acct_info **pinfo)
 {
        struct rpc_pipe_client *samr_pipe;
        struct policy_handle dom_pol;
-       struct acct_info *info = NULL;
+       struct wb_acct_info *info = NULL;
        uint32_t num_info = 0;
        TALLOC_CTX *tmp_ctx;
        NTSTATUS status, result;
@@ -506,7 +500,7 @@ done:
 static NTSTATUS builtin_enum_dom_groups(struct winbindd_domain *domain,
                                TALLOC_CTX *mem_ctx,
                                uint32 *num_entries,
-                               struct acct_info **info)
+                               struct wb_acct_info **info)
 {
        /* BUILTIN doesn't have domain groups */
        *num_entries = 0;
@@ -552,11 +546,11 @@ static NTSTATUS builtin_trusted_domains(struct winbindd_domain *domain,
 static NTSTATUS sam_enum_local_groups(struct winbindd_domain *domain,
                                      TALLOC_CTX *mem_ctx,
                                      uint32_t *pnum_info,
-                                     struct acct_info **pinfo)
+                                     struct wb_acct_info **pinfo)
 {
        struct rpc_pipe_client *samr_pipe;
        struct policy_handle dom_pol;
-       struct acct_info *info = NULL;
+       struct wb_acct_info *info = NULL;
        uint32_t num_info = 0;
        TALLOC_CTX *tmp_ctx;
        NTSTATUS status, result;