Rename structures to better match the names in the WSPP IDL.
[kai/samba.git] / source4 / libnet / libnet_samsync_ldb.c
index c49d800d40c87895c0ff75476cf15669c868ac90..c72aef7d7025b2ed3a894375e81116e69f26c246 100644 (file)
 
 #include "includes.h"
 #include "libnet/libnet.h"
-#include "libcli/ldap/ldap.h"
+#include "libcli/ldap/ldap_ndr.h"
 #include "dsdb/samdb/samdb.h"
 #include "auth/auth.h"
+#include "util/util_ldb.h"
 #include "librpc/gen_ndr/ndr_misc.h"
-#include "db_wrap.h"
+#include "ldb_wrap.h"
 #include "libcli/security/security.h"
 #include "librpc/rpc/dcerpc.h"
 #include "param/param.h"
@@ -100,7 +101,7 @@ static NTSTATUS samsync_ldb_add_foreignSecurityPrincipal(TALLOC_CTX *mem_ctx,
        *fsp_dn = msg->dn;
 
        /* create the alias */
-       ret = samdb_add(state->sam_ldb, mem_ctx, msg);
+       ret = ldb_add(state->sam_ldb, msg);
        if (ret != 0) {
                *error_string = talloc_asprintf(mem_ctx, "Failed to create foreignSecurityPrincipal "
                                                "record %s: %s",
@@ -165,13 +166,14 @@ static NTSTATUS samsync_ldb_handle_domain(TALLOC_CTX *mem_ctx,
                }
 
                if (state->samsync_state->domain_guid) {
-                       NTSTATUS nt_status;
+                       enum ndr_err_code ndr_err;
                        struct ldb_val v;
-                       nt_status = ndr_push_struct_blob(&v, msg, state->samsync_state->domain_guid,
+                       ndr_err = ndr_push_struct_blob(&v, msg, NULL, 
+                                                      state->samsync_state->domain_guid,
                                                         (ndr_push_flags_fn_t)ndr_push_GUID);
-                       if (!NT_STATUS_IS_OK(nt_status)) {
+                       if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                                *error_string = talloc_asprintf(mem_ctx, "ndr_push of domain GUID failed!");
-                               return nt_status;
+                               return ndr_map_error2ntstatus(ndr_err);
                        }
                        
                        ldb_msg_add_value(msg, "objectGUID", &v, NULL);
@@ -196,7 +198,7 @@ static NTSTATUS samsync_ldb_handle_domain(TALLOC_CTX *mem_ctx,
        }
 
        samdb_msg_add_string(state->sam_ldb, mem_ctx, 
-                            msg, "oEMInformation", domain->comment.string);
+                            msg, "oEMInformation", domain->oem_information.string);
 
        samdb_msg_add_int64(state->sam_ldb, mem_ctx, 
                            msg, "forceLogoff", domain->force_logoff_time);
@@ -247,7 +249,7 @@ static NTSTATUS samsync_ldb_handle_user(TALLOC_CTX *mem_ctx,
        struct ldb_message **remote_msgs = NULL;
        int ret, i;
        uint32_t acb;
-       BOOL add = False;
+       bool add = false;
        const char *attrs[] = { NULL };
        /* we may change this to a global search, then fill in only the things not in ldap later */
        const char *remote_attrs[] = { "userPrincipalName", "servicePrincipalName", 
@@ -275,7 +277,7 @@ static NTSTATUS samsync_ldb_handle_user(TALLOC_CTX *mem_ctx,
                                                ldb_errstring(state->sam_ldb));
                return NT_STATUS_INTERNAL_DB_CORRUPTION;
        } else if (ret == 0) {
-               add = True;
+               add = true;
        } else if (ret > 1) {
                *error_string = talloc_asprintf(mem_ctx, "More than one user with SID: %s in local LDB", 
                                                dom_sid_string(mem_ctx, user_sid));
@@ -364,7 +366,7 @@ static NTSTATUS samsync_ldb_handle_user(TALLOC_CTX *mem_ctx,
                /* Passwords.  Ensure there is no plaintext stored against
                 * this entry, as we only have hashes */
                samdb_msg_add_delete(state->sam_ldb, mem_ctx, msg,  
-                                    "sambaPassword"); 
+                                    "userPassword"); 
        }
        if (user->lm_password_present) {
                samdb_msg_add_hash(state->sam_ldb, mem_ctx, msg,  
@@ -428,7 +430,7 @@ static NTSTATUS samsync_ldb_handle_user(TALLOC_CTX *mem_ctx,
                        }
                }
 
-               ret = samdb_add(state->sam_ldb, mem_ctx, msg);
+               ret = ldb_add(state->sam_ldb, msg);
                if (ret != 0) {
                        struct ldb_dn *first_try_dn = msg->dn;
                        /* Try again with the default DN */
@@ -439,7 +441,7 @@ static NTSTATUS samsync_ldb_handle_user(TALLOC_CTX *mem_ctx,
                                return NT_STATUS_INTERNAL_DB_CORRUPTION;
                        } else {
                                msg->dn = talloc_steal(msg, remote_msgs[0]->dn);
-                               ret = samdb_add(state->sam_ldb, mem_ctx, msg);
+                               ret = ldb_add(state->sam_ldb, msg);
                                if (ret != 0) {
                                        *error_string = talloc_asprintf(mem_ctx, "Failed to create user record.  Tried both %s and %s: %s",
                                                                        ldb_dn_get_linearized(first_try_dn),
@@ -492,7 +494,7 @@ static NTSTATUS samsync_ldb_delete_user(TALLOC_CTX *mem_ctx,
                return NT_STATUS_INTERNAL_DB_CORRUPTION;
        }
 
-       ret = samdb_delete(state->sam_ldb, mem_ctx, msgs[0]->dn);
+       ret = ldb_delete(state->sam_ldb, msgs[0]->dn);
        if (ret != 0) {
                *error_string = talloc_asprintf(mem_ctx, "Failed to delete user record %s: %s",
                                                ldb_dn_get_linearized(msgs[0]->dn),
@@ -517,7 +519,7 @@ static NTSTATUS samsync_ldb_handle_group(TALLOC_CTX *mem_ctx,
        struct ldb_message *msg;
        struct ldb_message **msgs;
        int ret;
-       BOOL add = False;
+       bool add = false;
        const char *attrs[] = { NULL };
 
        msg = ldb_msg_new(mem_ctx);
@@ -534,7 +536,7 @@ static NTSTATUS samsync_ldb_handle_group(TALLOC_CTX *mem_ctx,
                *error_string = talloc_asprintf(mem_ctx, "gendb_search failed: %s", ldb_errstring(state->sam_ldb));
                return NT_STATUS_INTERNAL_DB_CORRUPTION;
        } else if (ret == 0) {
-               add = True;
+               add = true;
        } else if (ret > 1) {
                *error_string = talloc_asprintf(mem_ctx, "More than one group/alias with SID: %s", 
                                                dom_sid_string(mem_ctx, 
@@ -581,7 +583,7 @@ static NTSTATUS samsync_ldb_handle_group(TALLOC_CTX *mem_ctx,
                        return NT_STATUS_NO_MEMORY;             
                }
 
-               ret = samdb_add(state->sam_ldb, mem_ctx, msg);
+               ret = ldb_add(state->sam_ldb, msg);
                if (ret != 0) {
                        *error_string = talloc_asprintf(mem_ctx, "Failed to create group record %s: %s",
                                                        ldb_dn_get_linearized(msg->dn),
@@ -631,7 +633,7 @@ static NTSTATUS samsync_ldb_delete_group(TALLOC_CTX *mem_ctx,
                return NT_STATUS_INTERNAL_DB_CORRUPTION;
        }
        
-       ret = samdb_delete(state->sam_ldb, mem_ctx, msgs[0]->dn);
+       ret = ldb_delete(state->sam_ldb, msgs[0]->dn);
        if (ret != 0) {
                *error_string = talloc_asprintf(mem_ctx, "Failed to delete group record %s: %s",
                                                ldb_dn_get_linearized(msgs[0]->dn),
@@ -729,7 +731,7 @@ static NTSTATUS samsync_ldb_handle_alias(TALLOC_CTX *mem_ctx,
        struct ldb_message *msg;
        struct ldb_message **msgs;
        int ret;
-       BOOL add = False;
+       bool add = false;
        const char *attrs[] = { NULL };
 
        msg = ldb_msg_new(mem_ctx);
@@ -746,7 +748,7 @@ static NTSTATUS samsync_ldb_handle_alias(TALLOC_CTX *mem_ctx,
                *error_string = talloc_asprintf(mem_ctx, "gendb_search failed: %s", ldb_errstring(state->sam_ldb));
                return NT_STATUS_INTERNAL_DB_CORRUPTION;
        } else if (ret == 0) {
-               add = True;
+               add = true;
        } else if (ret > 1) {
                *error_string = talloc_asprintf(mem_ctx, "More than one group/alias with SID: %s", 
                                                dom_sid_string(mem_ctx, 
@@ -795,7 +797,7 @@ static NTSTATUS samsync_ldb_handle_alias(TALLOC_CTX *mem_ctx,
                        return NT_STATUS_NO_MEMORY;             
                }
 
-               ret = samdb_add(state->sam_ldb, mem_ctx, msg);
+               ret = ldb_add(state->sam_ldb, msg);
                if (ret != 0) {
                        *error_string = talloc_asprintf(mem_ctx, "Failed to create alias record %s: %s",
                                                        ldb_dn_get_linearized(msg->dn),
@@ -840,7 +842,7 @@ static NTSTATUS samsync_ldb_delete_alias(TALLOC_CTX *mem_ctx,
                return NT_STATUS_INTERNAL_DB_CORRUPTION;
        }
 
-       ret = samdb_delete(state->sam_ldb, mem_ctx, msgs[0]->dn);
+       ret = ldb_delete(state->sam_ldb, msgs[0]->dn);
        if (ret != 0) {
                *error_string = talloc_asprintf(mem_ctx, "Failed to delete alias record %s: %s",
                                                ldb_dn_get_linearized(msgs[0]->dn),
@@ -1192,7 +1194,8 @@ static NTSTATUS libnet_samsync_ldb_init(TALLOC_CTX *mem_ctx,
                ldap_url = talloc_asprintf(state, "ldap://%s", server);
                
                state->remote_ldb = ldb_wrap_connect(mem_ctx, 
-                                                    global_loadparm, 
+                                                    state->samsync_state->machine_net_ctx->event_ctx,
+                                                    state->samsync_state->machine_net_ctx->lp_ctx, 
                                                     ldap_url, 
                                                     NULL, state->samsync_state->machine_net_ctx->cred,
                                                     0, NULL);
@@ -1219,11 +1222,10 @@ NTSTATUS libnet_samsync_ldb(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, str
        state->secrets         = NULL;
        state->trusted_domains = NULL;
 
-       state->sam_ldb         = ldb_wrap_connect(mem_ctx, 
-                                                 global_loadparm, 
-                                                 lp_sam_url(global_loadparm), 
-                                                 r->in.session_info,
-                                                 ctx->cred, 0, NULL);
+       state->sam_ldb         = samdb_connect(mem_ctx, 
+                                              ctx->event_ctx,
+                                              ctx->lp_ctx, 
+                                              r->in.session_info);
 
        r2.out.error_string    = NULL;
        r2.in.binding_string   = r->in.binding_string;