r26539: Remove unnecessary statics.
[ira/wip.git] / source4 / libnet / libnet_become_dc.c
index b06573448e374a9cfc6c09ade1d7831fe2029f52..576c86f3e65c817138a1a4ec89b0860c0c509b76 100644 (file)
@@ -23,7 +23,7 @@
 #include "libcli/cldap/cldap.h"
 #include "lib/ldb/include/ldb.h"
 #include "lib/ldb/include/ldb_errors.h"
-#include "lib/db_wrap.h"
+#include "lib/ldb_wrap.h"
 #include "dsdb/samdb/samdb.h"
 #include "dsdb/common/flags.h"
 #include "librpc/gen_ndr/ndr_drsuapi_c.h"
@@ -738,6 +738,7 @@ static void becomeDC_send_cldap(struct libnet_BecomeDC_state *s)
        struct cldap_request *req;
 
        s->cldap.io.in.dest_address     = s->source_dsa.address;
+       s->cldap.io.in.dest_port        = lp_cldap_port(s->libnet->lp_ctx);
        s->cldap.io.in.realm            = s->domain.dns_name;
        s->cldap.io.in.host             = s->dest_dsa.netbios_name;
        s->cldap.io.in.user             = NULL;
@@ -783,14 +784,15 @@ static void becomeDC_recv_cldap(struct cldap_request *req)
        becomeDC_connect_ldap1(s);
 }
 
-static NTSTATUS becomeDC_ldap_connect(struct libnet_BecomeDC_state *s, struct becomeDC_ldap *ldap)
+static NTSTATUS becomeDC_ldap_connect(struct libnet_BecomeDC_state *s, 
+                                     struct becomeDC_ldap *ldap)
 {
        char *url;
 
        url = talloc_asprintf(s, "ldap://%s/", s->source_dsa.dns_name);
        NT_STATUS_HAVE_NO_MEMORY(url);
 
-       ldap->ldb = ldb_wrap_connect(s, url,
+       ldap->ldb = ldb_wrap_connect(s, s->libnet->lp_ctx, url,
                                     NULL,
                                     s->libnet->cred,
                                     0, NULL);
@@ -807,7 +809,7 @@ static NTSTATUS becomeDC_ldap1_rootdse(struct libnet_BecomeDC_state *s)
        int ret;
        struct ldb_result *r;
        struct ldb_dn *basedn;
-       static const char *attrs[] = {
+       const char *attrs[] = {
                "*",
                NULL
        };
@@ -851,7 +853,7 @@ static NTSTATUS becomeDC_ldap1_crossref_behavior_version(struct libnet_BecomeDC_
        int ret;
        struct ldb_result *r;
        struct ldb_dn *basedn;
-       static const char *attrs[] = {
+       const char *attrs[] = {
                "msDs-Behavior-Version",
                NULL
        };
@@ -880,7 +882,7 @@ static NTSTATUS becomeDC_ldap1_domain_behavior_version(struct libnet_BecomeDC_st
        int ret;
        struct ldb_result *r;
        struct ldb_dn *basedn;
-       static const char *attrs[] = {
+       const char *attrs[] = {
                "msDs-Behavior-Version",
                NULL
        };
@@ -909,7 +911,7 @@ static NTSTATUS becomeDC_ldap1_schema_object_version(struct libnet_BecomeDC_stat
        int ret;
        struct ldb_result *r;
        struct ldb_dn *basedn;
-       static const char *attrs[] = {
+       const char *attrs[] = {
                "objectVersion",
                NULL
        };
@@ -938,7 +940,7 @@ static NTSTATUS becomeDC_ldap1_w2k3_update_revision(struct libnet_BecomeDC_state
        int ret;
        struct ldb_result *r;
        struct ldb_dn *basedn;
-       static const char *attrs[] = {
+       const char *attrs[] = {
                "revision",
                NULL
        };
@@ -974,19 +976,19 @@ static NTSTATUS becomeDC_ldap1_infrastructure_fsmo(struct libnet_BecomeDC_state
        struct ldb_dn *basedn;
        struct ldb_dn *ntds_dn;
        struct ldb_dn *server_dn;
-       static const char *_1_1_attrs[] = {
+       const char *_1_1_attrs[] = {
                "1.1",
                NULL
        };
-       static const char *fsmo_attrs[] = {
+       const char *fsmo_attrs[] = {
                "fSMORoleOwner",
                NULL
        };
-       static const char *dns_attrs[] = {
+       const char *dns_attrs[] = {
                "dnsHostName",
                NULL
        };
-       static const char *guid_attrs[] = {
+       const char *guid_attrs[] = {
                "objectGUID",
                NULL
        };
@@ -1072,19 +1074,19 @@ static NTSTATUS becomeDC_ldap1_rid_manager_fsmo(struct libnet_BecomeDC_state *s)
        const char *reference_dn_str;
        struct ldb_dn *ntds_dn;
        struct ldb_dn *server_dn;
-       static const char *rid_attrs[] = {
+       const char *rid_attrs[] = {
                "rIDManagerReference",
                NULL
        };
-       static const char *fsmo_attrs[] = {
+       const char *fsmo_attrs[] = {
                "fSMORoleOwner",
                NULL
        };
-       static const char *dns_attrs[] = {
+       const char *dns_attrs[] = {
                "dnsHostName",
                NULL
        };
-       static const char *guid_attrs[] = {
+       const char *guid_attrs[] = {
                "objectGUID",
                NULL
        };
@@ -1210,7 +1212,7 @@ static NTSTATUS becomeDC_ldap1_computer_object(struct libnet_BecomeDC_state *s)
        struct ldb_result *r;
        struct ldb_dn *basedn;
        char *filter;
-       static const char *attrs[] = {
+       const char *attrs[] = {
                "distinguishedName",
                "userAccountControl",
                NULL
@@ -1304,7 +1306,7 @@ static NTSTATUS becomeDC_ldap1_server_object_2(struct libnet_BecomeDC_state *s)
        struct ldb_result *r;
        struct ldb_dn *basedn;
        const char *server_reference_bl_dn_str;
-       static const char *attrs[] = {
+       const char *attrs[] = {
                "serverReferenceBL",
                NULL
        };
@@ -1511,7 +1513,7 @@ static void becomeDC_drsuapi_connect_send(struct libnet_BecomeDC_state *s,
        drsuapi->s = s;
 
        if (!drsuapi->binding) {
-               if (lp_parm_bool(NULL, "become_dc", "print", false)) {
+               if (lp_parm_bool(s->libnet->lp_ctx, NULL, "become_dc", "print", false)) {
                        binding_str = talloc_asprintf(s, "ncacn_ip_tcp:%s[krb5,print,seal]", s->source_dsa.dns_name);
                        if (composite_nomem(binding_str, c)) return;
                } else {
@@ -1524,7 +1526,8 @@ static void becomeDC_drsuapi_connect_send(struct libnet_BecomeDC_state *s,
        }
 
        creq = dcerpc_pipe_connect_b_send(s, drsuapi->binding, &ndr_table_drsuapi,
-                                         s->libnet->cred, s->libnet->event_ctx);
+                                         s->libnet->cred, s->libnet->event_ctx,
+                                         s->libnet->lp_ctx);
        composite_continue(c, creq, recv_fn, s);
 }
 
@@ -1684,6 +1687,7 @@ static void becomeDC_drsuapi1_add_entry_send(struct libnet_BecomeDC_state *s)
        struct drsuapi_DsReplicaObjectIdentifier *identifier;
        uint32_t num_attrs, i = 0;
        struct drsuapi_DsReplicaAttribute *attrs;
+       enum ndr_err_code ndr_err;
        bool w2k3;
 
        /* choose a random invocationId */
@@ -1736,7 +1740,8 @@ static void becomeDC_drsuapi1_add_entry_send(struct libnet_BecomeDC_state *s)
                domain_admins_sid_str = dom_sid_string(domain_admins_sid, domain_admins_sid);
                if (composite_nomem(domain_admins_sid_str, c)) return;
 
-               v = security_descriptor_create(vd,
+               v = security_descriptor_dacl_create(vd,
+                                              0,
                                               /* owner: domain admins */
                                               domain_admins_sid_str,
                                               /* owner group: domain admins */
@@ -1780,8 +1785,11 @@ static void becomeDC_drsuapi1_add_entry_send(struct libnet_BecomeDC_state *s)
                                               NULL);
                if (composite_nomem(v, c)) return;
 
-               c->status = ndr_push_struct_blob(&vd[0], vd, v,(ndr_push_flags_fn_t)ndr_push_security_descriptor);
-               if (!composite_is_ok(c)) return;
+               ndr_err = ndr_push_struct_blob(&vd[0], vd, v,(ndr_push_flags_fn_t)ndr_push_security_descriptor);
+               if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+                       c->status = ndr_map_error2ntstatus(ndr_err);
+                       if (!composite_is_ok(c)) return;
+               }
 
                vs[0].blob              = &vd[0];
 
@@ -1836,9 +1844,12 @@ static void becomeDC_drsuapi1_add_entry_send(struct libnet_BecomeDC_state *s)
                                                          s->forest.schema_dn_str);
                if (composite_nomem(v[0].dn, c)) return;
 
-               c->status = ndr_push_struct_blob(&vd[0], vd, &v[0],
-                                                (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
-               if (!composite_is_ok(c)) return;
+               ndr_err = ndr_push_struct_blob(&vd[0], vd, &v[0],
+                                              (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
+               if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+                       c->status = ndr_map_error2ntstatus(ndr_err);
+                       if (!composite_is_ok(c)) return;
+               }
 
                vs[0].blob              = &vd[0];
 
@@ -1863,8 +1874,11 @@ static void becomeDC_drsuapi1_add_entry_send(struct libnet_BecomeDC_state *s)
 
                v = &s->dest_dsa.invocation_id;
 
-               c->status = ndr_push_struct_blob(&vd[0], vd, v, (ndr_push_flags_fn_t)ndr_push_GUID);
-               if (!composite_is_ok(c)) return;
+               ndr_err = ndr_push_struct_blob(&vd[0], vd, v, (ndr_push_flags_fn_t)ndr_push_GUID);
+               if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+                       c->status = ndr_map_error2ntstatus(ndr_err);
+                       if (!composite_is_ok(c)) return;
+               }
 
                vs[0].blob              = &vd[0];
 
@@ -1899,17 +1913,26 @@ static void becomeDC_drsuapi1_add_entry_send(struct libnet_BecomeDC_state *s)
                v[2].sid                = s->zero_sid;
                v[2].dn                 = s->forest.schema_dn_str;
 
-               c->status = ndr_push_struct_blob(&vd[0], vd, &v[0],
-                                                (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
-               if (!composite_is_ok(c)) return;
+               ndr_err = ndr_push_struct_blob(&vd[0], vd, &v[0],
+                                              (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
+               if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+                       c->status = ndr_map_error2ntstatus(ndr_err);
+                       if (!composite_is_ok(c)) return;
+               }
 
-               c->status = ndr_push_struct_blob(&vd[1], vd, &v[1],
-                                                (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
-               if (!composite_is_ok(c)) return;
+               ndr_err = ndr_push_struct_blob(&vd[1], vd, &v[1],
+                                              (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
+               if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+                       c->status = ndr_map_error2ntstatus(ndr_err);
+                       if (!composite_is_ok(c)) return;
+               }
 
-               c->status = ndr_push_struct_blob(&vd[2], vd, &v[2],
-                                                (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
-               if (!composite_is_ok(c)) return;
+               ndr_err = ndr_push_struct_blob(&vd[2], vd, &v[2],
+                                              (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
+               if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+                       c->status = ndr_map_error2ntstatus(ndr_err);
+                       if (!composite_is_ok(c)) return;
+               }
 
                vs[0].blob              = &vd[0];
                vs[1].blob              = &vd[1];
@@ -1946,17 +1969,26 @@ static void becomeDC_drsuapi1_add_entry_send(struct libnet_BecomeDC_state *s)
                v[2].sid                = s->zero_sid;
                v[2].dn                 = s->forest.schema_dn_str;
 
-               c->status = ndr_push_struct_blob(&vd[0], vd, &v[0],
-                                                (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
-               if (!composite_is_ok(c)) return;
+               ndr_err = ndr_push_struct_blob(&vd[0], vd, &v[0],
+                                              (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
+               if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+                       c->status = ndr_map_error2ntstatus(ndr_err);
+                       if (!composite_is_ok(c)) return;
+               }
 
-               c->status = ndr_push_struct_blob(&vd[1], vd, &v[1],
-                                                (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
-               if (!composite_is_ok(c)) return;
+               ndr_err = ndr_push_struct_blob(&vd[1], vd, &v[1],
+                                              (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
+               if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+                       c->status = ndr_map_error2ntstatus(ndr_err);
+                       if (!composite_is_ok(c)) return;
+               }
 
-               c->status = ndr_push_struct_blob(&vd[2], vd, &v[2],
-                                                (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
-               if (!composite_is_ok(c)) return;
+               ndr_err = ndr_push_struct_blob(&vd[2], vd, &v[2],
+                                              (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
+               if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+                       c->status = ndr_map_error2ntstatus(ndr_err);
+                       if (!composite_is_ok(c)) return;
+               }
 
                vs[0].blob              = &vd[0];
                vs[1].blob              = &vd[1];
@@ -1985,9 +2017,12 @@ static void becomeDC_drsuapi1_add_entry_send(struct libnet_BecomeDC_state *s)
                v[0].sid                = s->zero_sid;
                v[0].dn                 = s->forest.schema_dn_str;
 
-               c->status = ndr_push_struct_blob(&vd[0], vd, &v[0],
-                                                (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
-               if (!composite_is_ok(c)) return;
+               ndr_err = ndr_push_struct_blob(&vd[0], vd, &v[0],
+                                              (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
+               if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+                       c->status = ndr_map_error2ntstatus(ndr_err);
+                       if (!composite_is_ok(c)) return;
+               }
 
                vs[0].blob              = &vd[0];
 
@@ -2014,9 +2049,12 @@ static void becomeDC_drsuapi1_add_entry_send(struct libnet_BecomeDC_state *s)
                v[0].sid                = s->zero_sid;
                v[0].dn                 = s->domain.dn_str;
 
-               c->status = ndr_push_struct_blob(&vd[0], vd, &v[0],
-                                                (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
-               if (!composite_is_ok(c)) return;
+               ndr_err = ndr_push_struct_blob(&vd[0], vd, &v[0],
+                                              (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
+               if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+                       c->status = ndr_map_error2ntstatus(ndr_err);
+                       if (!composite_is_ok(c)) return;
+               }
 
                vs[0].blob              = &vd[0];
 
@@ -2093,9 +2131,12 @@ static void becomeDC_drsuapi1_add_entry_send(struct libnet_BecomeDC_state *s)
                v[0].sid                = s->zero_sid;
                v[0].dn                 = s->dest_dsa.computer_dn_str;
 
-               c->status = ndr_push_struct_blob(&vd[0], vd, &v[0],
-                                                (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
-               if (!composite_is_ok(c)) return;
+               ndr_err = ndr_push_struct_blob(&vd[0], vd, &v[0],
+                                              (ndr_push_flags_fn_t)ndr_push_drsuapi_DsReplicaObjectIdentifier3);
+               if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+                       c->status = ndr_map_error2ntstatus(ndr_err);
+                       if (!composite_is_ok(c)) return;
+               }
 
                vs[0].blob              = &vd[0];
 
@@ -2811,7 +2852,7 @@ static NTSTATUS becomeDC_ldap2_move_computer(struct libnet_BecomeDC_state *s)
        struct ldb_dn *basedn;
        struct ldb_dn *old_dn;
        struct ldb_dn *new_dn;
-       static const char *_1_1_attrs[] = {
+       const char *_1_1_attrs[] = {
                "1.1",
                NULL
        };