]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
r23888: move elements belonging to the current ldap connection to a
authorStefan Metzmacher <metze@samba.org>
Mon, 16 Jul 2007 11:08:00 +0000 (11:08 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:28:38 +0000 (12:28 -0500)
substructure.

metze
(This used to be commit 00909194a6c1ed193dfdb296f50f58a53450583c)

source3/include/ads.h
source3/libads/ldap.c
source3/libads/ldap_printer.c
source3/libads/ldap_utils.c
source3/libads/sasl.c
source3/libsmb/namequery_dc.c
source3/printing/nt_printing.c
source3/utils/net_ads.c

index 85c87bfeee0f684b78c325b72168e7e2ab509368..179aa742f27c3ed6ca13fc6a17e3f128748573e9 100644 (file)
@@ -15,16 +15,7 @@ enum wb_posix_mapping {
        WB_POSIX_MAP_UNIXINFO   = 4
 };
 
-typedef struct {
-#ifdef HAVE_LDAP
-       LDAP *ld;
-#else
-       void *ld; /* the active ldap structure */
-#endif
-       struct in_addr ldap_ip; /* the ip of the active connection, if any */
-       time_t last_attempt; /* last attempt to reconnect */
-       int ldap_port;
-       
+typedef struct {       
        int is_mine;    /* do I own this structure's memory? */
        
        /* info needed to find the server */
@@ -61,6 +52,18 @@ typedef struct {
                char *schema_path;
                char *config_path;
        } config;
+
+       /* info about the current LDAP connection */
+       struct {
+#ifdef HAVE_LDAP
+               LDAP *ld;
+#else
+               void *ld; /* the active ldap structure */
+#endif
+               struct in_addr ip; /* the ip of the active connection, if any */
+               time_t last_attempt; /* last attempt to reconnect */
+               int port;
+       } ldap;
 } ADS_STRUCT;
 
 /* used to remember the names of the posix attributes in AD */
index c5c43c44c5ae87ac0245322328d2eec15fd7e3bb..c8f68546ad811983c35376cd449b345653adfcfe 100644 (file)
@@ -224,8 +224,8 @@ BOOL ads_try_connect(ADS_STRUCT *ads, const char *server )
                
        ads->server.workgroup          = SMB_STRDUP(cldap_reply.netbios_domain);
 
-       ads->ldap_port = LDAP_PORT;
-       ads->ldap_ip = *interpret_addr2(srv);
+       ads->ldap.port = LDAP_PORT;
+       ads->ldap.ip = *interpret_addr2(srv);
        SAFE_FREE(srv);
        
        /* Store our site name. */
@@ -372,8 +372,8 @@ ADS_STATUS ads_connect(ADS_STRUCT *ads)
        ADS_STATUS status;
        NTSTATUS ntstatus;
 
-       ads->last_attempt = time(NULL);
-       ads->ld = NULL;
+       ads->ldap.last_attempt = time(NULL);
+       ads->ldap.ld = NULL;
 
        /* try with a user specified server */
 
@@ -390,7 +390,7 @@ ADS_STATUS ads_connect(ADS_STRUCT *ads)
        return ADS_ERROR_NT(ntstatus);
 
 got_connection:
-       DEBUG(3,("Connected to LDAP server %s\n", inet_ntoa(ads->ldap_ip)));
+       DEBUG(3,("Connected to LDAP server %s\n", inet_ntoa(ads->ldap.ip)));
 
        if (!ads->auth.user_name) {
                /* Must use the userPrincipalName value here or sAMAccountName
@@ -404,7 +404,7 @@ got_connection:
        }
 
        if (!ads->auth.kdc_server) {
-               ads->auth.kdc_server = SMB_STRDUP(inet_ntoa(ads->ldap_ip));
+               ads->auth.kdc_server = SMB_STRDUP(inet_ntoa(ads->ldap.ip));
        }
 
 #if KRB5_DNS_HACK
@@ -426,7 +426,7 @@ got_connection:
        
        /* Otherwise setup the TCP LDAP session */
 
-       if ( (ads->ld = ldap_open_with_timeout(ads->config.ldap_server_name, 
+       if ( (ads->ldap.ld = ldap_open_with_timeout(ads->config.ldap_server_name, 
                LDAP_PORT, lp_ldap_timeout())) == NULL )
        {
                return ADS_ERROR(LDAP_OPERATIONS_ERROR);
@@ -434,13 +434,13 @@ got_connection:
 
        /* cache the successful connection for workgroup and realm */
        if (ads_closest_dc(ads)) {
-               saf_store( ads->server.workgroup, inet_ntoa(ads->ldap_ip));
-               saf_store( ads->server.realm, inet_ntoa(ads->ldap_ip));
+               saf_store( ads->server.workgroup, inet_ntoa(ads->ldap.ip));
+               saf_store( ads->server.realm, inet_ntoa(ads->ldap.ip));
        }
 
-       ldap_set_option(ads->ld, LDAP_OPT_PROTOCOL_VERSION, &version);
+       ldap_set_option(ads->ldap.ld, LDAP_OPT_PROTOCOL_VERSION, &version);
 
-       status = ADS_ERROR(smb_ldap_start_tls(ads->ld, version));
+       status = ADS_ERROR(smb_ldap_start_tls(ads->ldap.ld, version));
        if (!ADS_ERR_OK(status)) {
                return status;
        }
@@ -455,11 +455,11 @@ got_connection:
        /* Now do the bind */
        
        if (ads->auth.flags & ADS_AUTH_ANON_BIND) {
-               return ADS_ERROR(ldap_simple_bind_s( ads->ld, NULL, NULL));
+               return ADS_ERROR(ldap_simple_bind_s( ads->ldap.ld, NULL, NULL));
        }
 
        if (ads->auth.flags & ADS_AUTH_SIMPLE_BIND) {
-               return ADS_ERROR(ldap_simple_bind_s( ads->ld, ads->auth.user_name, ads->auth.password));
+               return ADS_ERROR(ldap_simple_bind_s( ads->ldap.ld, ads->auth.user_name, ads->auth.password));
        }
 
        return ads_sasl_bind(ads);
@@ -471,9 +471,9 @@ got_connection:
  **/
 void ads_disconnect(ADS_STRUCT *ads)
 {
-       if (ads->ld) {
-               ldap_unbind(ads->ld);
-               ads->ld = NULL;
+       if (ads->ldap.ld) {
+               ldap_unbind(ads->ldap.ld);
+               ads->ldap.ld = NULL;
        }
 }
 
@@ -616,7 +616,7 @@ static ADS_STATUS ads_do_paged_search_args(ADS_STRUCT *ads,
        }
                
        /* Paged results only available on ldap v3 or later */
-       ldap_get_option(ads->ld, LDAP_OPT_PROTOCOL_VERSION, &version);
+       ldap_get_option(ads->ldap.ld, LDAP_OPT_PROTOCOL_VERSION, &version);
        if (version < LDAP_VERSION3) {
                rc =  LDAP_NOT_SUPPORTED;
                goto done;
@@ -693,9 +693,9 @@ static ADS_STATUS ads_do_paged_search_args(ADS_STRUCT *ads,
           leaving this in despite the control that says don't generate
           referrals, in case the server doesn't support it (jmcd)
        */
-       ldap_set_option(ads->ld, LDAP_OPT_REFERRALS, LDAP_OPT_OFF);
+       ldap_set_option(ads->ldap.ld, LDAP_OPT_REFERRALS, LDAP_OPT_OFF);
 
-       rc = ldap_search_with_timeout(ads->ld, utf8_path, scope, utf8_expr, 
+       rc = ldap_search_with_timeout(ads->ldap.ld, utf8_path, scope, utf8_expr, 
                                      search_attrs, 0, controls,
                                      NULL, LDAP_NO_LIMIT,
                                      (LDAPMessage **)res);
@@ -709,7 +709,7 @@ static ADS_STATUS ads_do_paged_search_args(ADS_STRUCT *ads,
                goto done;
        }
 
-       rc = ldap_parse_result(ads->ld, *res, NULL, NULL, NULL,
+       rc = ldap_parse_result(ads->ldap.ld, *res, NULL, NULL, NULL,
                                        NULL, &rcontrols,  0);
 
        if (!rcontrols) {
@@ -928,9 +928,9 @@ ADS_STATUS ads_do_search_all_fn(ADS_STRUCT *ads, const char *bind_path,
        }
 
        /* see the note in ads_do_paged_search - we *must* disable referrals */
-       ldap_set_option(ads->ld, LDAP_OPT_REFERRALS, LDAP_OPT_OFF);
+       ldap_set_option(ads->ldap.ld, LDAP_OPT_REFERRALS, LDAP_OPT_OFF);
 
-       rc = ldap_search_with_timeout(ads->ld, utf8_path, scope, utf8_expr,
+       rc = ldap_search_with_timeout(ads->ldap.ld, utf8_path, scope, utf8_expr,
                                      search_attrs, 0, NULL, NULL, 
                                      LDAP_NO_LIMIT,
                                      (LDAPMessage **)res);
@@ -1007,7 +1007,7 @@ void ads_memfree(ADS_STRUCT *ads, void *mem)
 {
        char *utf8_dn, *unix_dn;
 
-       utf8_dn = ldap_get_dn(ads->ld, msg);
+       utf8_dn = ldap_get_dn(ads->ldap.ld, msg);
 
        if (!utf8_dn) {
                DEBUG (5, ("ads_get_dn: ldap_get_dn failed\n"));
@@ -1237,7 +1237,7 @@ ADS_STATUS ads_gen_mod(ADS_STRUCT *ads, const char *mod_dn, ADS_MODLIST mods)
        for(i=0;(mods[i]!=0)&&(mods[i]!=(LDAPMod *) -1);i++);
        /* make sure the end of the list is NULL */
        mods[i] = NULL;
-       ret = ldap_modify_ext_s(ads->ld, utf8_dn,
+       ret = ldap_modify_ext_s(ads->ldap.ld, utf8_dn,
                                (LDAPMod **) mods, controls, NULL);
        SAFE_FREE(utf8_dn);
        return ADS_ERROR(ret);
@@ -1265,7 +1265,7 @@ ADS_STATUS ads_gen_add(ADS_STRUCT *ads, const char *new_dn, ADS_MODLIST mods)
        /* make sure the end of the list is NULL */
        mods[i] = NULL;
 
-       ret = ldap_add_s(ads->ld, utf8_dn, (LDAPMod**)mods);
+       ret = ldap_add_s(ads->ldap.ld, utf8_dn, (LDAPMod**)mods);
        SAFE_FREE(utf8_dn);
        return ADS_ERROR(ret);
 }
@@ -1285,7 +1285,7 @@ ADS_STATUS ads_del_dn(ADS_STRUCT *ads, char *del_dn)
                return ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
        }
        
-       ret = ldap_delete_s(ads->ld, utf8_dn);
+       ret = ldap_delete_s(ads->ldap.ld, utf8_dn);
        SAFE_FREE(utf8_dn);
        return ADS_ERROR(ret);
 }
@@ -1765,7 +1765,7 @@ ADS_STATUS ads_move_machine_acct(ADS_STRUCT *ads, const char *machine_name,
                goto done;
        }
 
-       ldap_status = ldap_rename_s(ads->ld, computer_dn, computer_rdn, 
+       ldap_status = ldap_rename_s(ads->ldap.ld, computer_dn, computer_rdn, 
                                    org_unit, 1, NULL, NULL);
        rc = ADS_ERROR(ldap_status);
 
@@ -1952,10 +1952,10 @@ static BOOL ads_dump_field(ADS_STRUCT *ads, char *field, void **values, void *da
                char *utf8_field;
                BerElement *b;
        
-               for (utf8_field=ldap_first_attribute(ads->ld,
+               for (utf8_field=ldap_first_attribute(ads->ldap.ld,
                                                     (LDAPMessage *)msg,&b); 
                     utf8_field;
-                    utf8_field=ldap_next_attribute(ads->ld,
+                    utf8_field=ldap_next_attribute(ads->ldap.ld,
                                                    (LDAPMessage *)msg,b)) {
                        struct berval **ber_vals;
                        char **str_vals, **utf8_vals;
@@ -1966,14 +1966,14 @@ static BOOL ads_dump_field(ADS_STRUCT *ads, char *field, void **values, void *da
                        string = fn(ads, field, NULL, data_area);
 
                        if (string) {
-                               utf8_vals = ldap_get_values(ads->ld,
+                               utf8_vals = ldap_get_values(ads->ldap.ld,
                                                 (LDAPMessage *)msg, field);
                                str_vals = ads_pull_strvals(ctx, 
                                                  (const char **) utf8_vals);
                                fn(ads, field, (void **) str_vals, data_area);
                                ldap_value_free(utf8_vals);
                        } else {
-                               ber_vals = ldap_get_values_len(ads->ld, 
+                               ber_vals = ldap_get_values_len(ads->ldap.ld
                                                 (LDAPMessage *)msg, field);
                                fn(ads, field, (void **) ber_vals, data_area);
 
@@ -1997,7 +1997,7 @@ static BOOL ads_dump_field(ADS_STRUCT *ads, char *field, void **values, void *da
  **/
 int ads_count_replies(ADS_STRUCT *ads, void *res)
 {
-       return ldap_count_entries(ads->ld, (LDAPMessage *)res);
+       return ldap_count_entries(ads->ldap.ld, (LDAPMessage *)res);
 }
 
 /**
@@ -2008,7 +2008,7 @@ int ads_count_replies(ADS_STRUCT *ads, void *res)
  **/
  LDAPMessage *ads_first_entry(ADS_STRUCT *ads, LDAPMessage *res)
 {
-       return ldap_first_entry(ads->ld, res);
+       return ldap_first_entry(ads->ldap.ld, res);
 }
 
 /**
@@ -2019,7 +2019,7 @@ int ads_count_replies(ADS_STRUCT *ads, void *res)
  **/
  LDAPMessage *ads_next_entry(ADS_STRUCT *ads, LDAPMessage *res)
 {
-       return ldap_next_entry(ads->ld, res);
+       return ldap_next_entry(ads->ldap.ld, res);
 }
 
 /**
@@ -2038,7 +2038,7 @@ int ads_count_replies(ADS_STRUCT *ads, void *res)
        char *ux_string;
        size_t rc;
 
-       values = ldap_get_values(ads->ld, msg, field);
+       values = ldap_get_values(ads->ldap.ld, msg, field);
        if (!values)
                return NULL;
        
@@ -2069,7 +2069,7 @@ int ads_count_replies(ADS_STRUCT *ads, void *res)
        char **ret = NULL;
        int i;
 
-       values = ldap_get_values(ads->ld, msg, field);
+       values = ldap_get_values(ads->ldap.ld, msg, field);
        if (!values)
                return NULL;
 
@@ -2132,9 +2132,9 @@ int ads_count_replies(ADS_STRUCT *ads, void *res)
        expected_range_attrib = talloc_asprintf(mem_ctx, "%s;Range=", field);
 
        /* look for Range result */
-       for (attr = ldap_first_attribute(ads->ld, (LDAPMessage *)msg, &ptr); 
+       for (attr = ldap_first_attribute(ads->ldap.ld, (LDAPMessage *)msg, &ptr); 
             attr; 
-            attr = ldap_next_attribute(ads->ld, (LDAPMessage *)msg, ptr)) {
+            attr = ldap_next_attribute(ads->ldap.ld, (LDAPMessage *)msg, ptr)) {
                /* we ignore the fact that this is utf8, as all attributes are ascii... */
                if (strnequal(attr, expected_range_attrib, strlen(expected_range_attrib))) {
                        range_attr = attr;
@@ -2234,7 +2234,7 @@ int ads_count_replies(ADS_STRUCT *ads, void *res)
 {
        char **values;
 
-       values = ldap_get_values(ads->ld, msg, field);
+       values = ldap_get_values(ads->ldap.ld, msg, field);
        if (!values)
                return False;
        if (!values[0]) {
@@ -2259,7 +2259,7 @@ int ads_count_replies(ADS_STRUCT *ads, void *res)
        char **values;
        UUID_FLAT flat_guid;
 
-       values = ldap_get_values(ads->ld, msg, "objectGUID");
+       values = ldap_get_values(ads->ldap.ld, msg, "objectGUID");
        if (!values)
                return False;
        
@@ -2289,7 +2289,7 @@ int ads_count_replies(ADS_STRUCT *ads, void *res)
        struct berval **values;
        BOOL ret = False;
 
-       values = ldap_get_values_len(ads->ld, msg, field);
+       values = ldap_get_values_len(ads->ldap.ld, msg, field);
 
        if (!values)
                return False;
@@ -2317,7 +2317,7 @@ int ads_count_replies(ADS_STRUCT *ads, void *res)
        BOOL ret;
        int count, i;
 
-       values = ldap_get_values_len(ads->ld, msg, field);
+       values = ldap_get_values_len(ads->ldap.ld, msg, field);
 
        if (!values)
                return 0;
@@ -2364,7 +2364,7 @@ int ads_count_replies(ADS_STRUCT *ads, void *res)
        struct berval **values;
        BOOL ret = False;
 
-       values = ldap_get_values_len(ads->ld, msg, field);
+       values = ldap_get_values_len(ads->ldap.ld, msg, field);
 
        if (!values) return False;
 
@@ -2481,7 +2481,7 @@ ADS_STATUS ads_current_time(ADS_STRUCT *ads)
 
         /* establish a new ldap tcp session if necessary */
 
-       if ( !ads->ld ) {
+       if ( !ads->ldap.ld ) {
                if ( (ads_s = ads_init( ads->server.realm, ads->server.workgroup, 
                        ads->server.ldap_server )) == NULL )
                {
@@ -2542,7 +2542,7 @@ ADS_STATUS ads_domain_func_level(ADS_STRUCT *ads, uint32 *val)
 
         /* establish a new ldap tcp session if necessary */
 
-       if ( !ads->ld ) {
+       if ( !ads->ldap.ld ) {
                if ( (ads_s = ads_init( ads->server.realm, ads->server.workgroup, 
                        ads->server.ldap_server )) == NULL )
                {
@@ -3100,7 +3100,7 @@ ADS_STATUS ads_leave_realm(ADS_STRUCT *ads, const char *hostname)
 
        hostnameDN = ads_get_dn(ads, (LDAPMessage *)msg);
 
-       rc = ldap_delete_ext_s(ads->ld, hostnameDN, pldap_control, NULL);
+       rc = ldap_delete_ext_s(ads->ldap.ld, hostnameDN, pldap_control, NULL);
        if (rc) {
                DEBUG(3,("ldap_delete_ext_s failed with error code %d\n", rc));
        }else {
index cfddd4cc8ace13bec9331df84c0806e26a7a80ac..0c6a280c36cd5811c6962c8ed3e20b0d71fba877 100644 (file)
@@ -43,7 +43,7 @@
        if (ads_count_replies(ads, *res) != 1) {
                return ADS_ERROR(LDAP_NO_SUCH_OBJECT);
        }
-       srv_dn = ldap_get_dn(ads->ld, *res);
+       srv_dn = ldap_get_dn(ads->ldap.ld, *res);
        if (srv_dn == NULL) {
                return ADS_ERROR(LDAP_NO_MEMORY);
        }
index 16fd32b80795e7905701e0b720562ac9debbfbd7..2f5c11b90c3c68bf591031ba5fddc01cee5b7e6a 100644 (file)
@@ -38,8 +38,8 @@ static ADS_STATUS ads_do_search_retry_internal(ADS_STRUCT *ads, const char *bind
 
        *res = NULL;
 
-       if (!ads->ld &&
-           time(NULL) - ads->last_attempt < ADS_RECONNECT_TIME) {
+       if (!ads->ldap.ld &&
+           time(NULL) - ads->ldap.last_attempt < ADS_RECONNECT_TIME) {
                return ADS_ERROR(LDAP_SERVER_DOWN);
        }
 
index 9536ba31beef981112a58ede51164382753e3035..a73545f8e59384aeb65d5ecf9f47cdab46b12cca 100644 (file)
@@ -75,7 +75,7 @@ static ADS_STATUS ads_sasl_spnego_ntlmssp_bind(ADS_STRUCT *ads)
                        cred.bv_val = (char *)msg1.data;
                        cred.bv_len = msg1.length;
                        scred = NULL;
-                       rc = ldap_sasl_bind_s(ads->ld, NULL, "GSS-SPNEGO", &cred, NULL, NULL, &scred);
+                       rc = ldap_sasl_bind_s(ads->ldap.ld, NULL, "GSS-SPNEGO", &cred, NULL, NULL, &scred);
                        data_blob_free(&msg1);
                        if ((rc != LDAP_SASL_BIND_IN_PROGRESS) && (rc != 0)) {
                                if (scred) {
@@ -157,7 +157,7 @@ static ADS_STATUS ads_sasl_spnego_krb5_bind(ADS_STRUCT *ads, const char *princip
        cred.bv_val = (char *)blob.data;
        cred.bv_len = blob.length;
 
-       rc = ldap_sasl_bind_s(ads->ld, NULL, "GSS-SPNEGO", &cred, NULL, NULL, &scred);
+       rc = ldap_sasl_bind_s(ads->ldap.ld, NULL, "GSS-SPNEGO", &cred, NULL, NULL, &scred);
 
        data_blob_free(&blob);
        data_blob_free(&session_key);
@@ -183,7 +183,7 @@ static ADS_STATUS ads_sasl_spnego_bind(ADS_STRUCT *ads)
        BOOL got_kerberos_mechanism = False;
 #endif
 
-       rc = ldap_sasl_bind_s(ads->ld, NULL, "GSS-SPNEGO", NULL, NULL, NULL, &scred);
+       rc = ldap_sasl_bind_s(ads->ldap.ld, NULL, "GSS-SPNEGO", NULL, NULL, NULL, &scred);
 
        if (rc != LDAP_SASL_BIND_IN_PROGRESS) {
                status = ADS_ERROR(rc);
@@ -397,7 +397,7 @@ static ADS_STATUS ads_sasl_gssapi_bind(ADS_STRUCT *ads)
                cred.bv_val = (char *)output_token.value;
                cred.bv_len = output_token.length;
 
-               rc = ldap_sasl_bind_s(ads->ld, NULL, "GSSAPI", &cred, NULL, NULL, 
+               rc = ldap_sasl_bind_s(ads->ldap.ld, NULL, "GSSAPI", &cred, NULL, NULL, 
                                      &scred);
                if (rc != LDAP_SASL_BIND_IN_PROGRESS) {
                        status = ADS_ERROR(rc);
@@ -471,7 +471,7 @@ static ADS_STATUS ads_sasl_gssapi_bind(ADS_STRUCT *ads)
        cred.bv_val = (char *)input_token.value;
        cred.bv_len = input_token.length;
 
-       rc = ldap_sasl_bind_s(ads->ld, NULL, "GSSAPI", &cred, NULL, NULL, 
+       rc = ldap_sasl_bind_s(ads->ldap.ld, NULL, "GSSAPI", &cred, NULL, NULL, 
                              &scred);
        status = ADS_ERROR(rc);
 
@@ -515,7 +515,7 @@ ADS_STATUS ads_sasl_bind(ADS_STRUCT *ads)
        status = ads_do_search(ads, "", LDAP_SCOPE_BASE, "(objectclass=*)", attrs, &res);
        if (!ADS_ERR_OK(status)) return status;
 
-       values = ldap_get_values(ads->ld, res, "supportedSASLMechanisms");
+       values = ldap_get_values(ads->ldap.ld, res, "supportedSASLMechanisms");
 
        /* try our supported mechanisms in order */
        for (i=0;sasl_mechanisms[i].name;i++) {
index 8c6e8e37af1d7cf4dacc66fa32db180889f98c7e..0c1207d4e54b955fbee5640fcdfe5c1b9bc2f7df 100644 (file)
@@ -106,7 +106,7 @@ static BOOL ads_dc_name(const char *domain,
                        create_local_private_krb5_conf_for_domain(realm,
                                                                domain,
                                                                sitename,
-                                                               ads->ldap_ip);
+                                                               ads->ldap.ip);
                }
 #endif
                break;
@@ -123,7 +123,7 @@ static BOOL ads_dc_name(const char *domain,
 
        fstrcpy(srv_name, ads->config.ldap_server_name);
        strupper_m(srv_name);
-       *dc_ip = ads->ldap_ip;
+       *dc_ip = ads->ldap.ip;
        ads_destroy(&ads);
        
        DEBUG(4,("ads_dc_name: using server='%s' IP=%s\n",
index e28f0f0b02e779f8148cef117194a26d88988052..944b695a9dddc0ee16aa18e7b5de2768bcfc71f0 100644 (file)
@@ -3040,7 +3040,7 @@ static WERROR nt_printer_publish_ads(ADS_STRUCT *ads,
        /* We use ldap_get_dn here as we need the answer
         * in utf8 to call ldap_explode_dn(). JRA. */
 
-       srv_dn_utf8 = ldap_get_dn((LDAP *)ads->ld, (LDAPMessage *)res);
+       srv_dn_utf8 = ldap_get_dn((LDAP *)ads->ldap.ld, (LDAPMessage *)res);
        if (!srv_dn_utf8) {
                ads_destroy(&ads);
                return WERR_SERVER_UNAVAILABLE;
index 10d33fcfef792468672755afbfdfc98c0943b289..d4dfbb6a2b5228993399b28e3804b23a3c87d124 100644 (file)
@@ -80,13 +80,13 @@ static int net_ads_cldap_netlogon(ADS_STRUCT *ads)
 {
        struct cldap_netlogon_reply reply;
 
-       if ( !ads_cldap_netlogon( inet_ntoa(ads->ldap_ip), ads->server.realm, &reply ) ) {
+       if ( !ads_cldap_netlogon( inet_ntoa(ads->ldap.ip), ads->server.realm, &reply ) ) {
                d_fprintf(stderr, "CLDAP query failed!\n");
                return -1;
        }
 
        d_printf("Information for Domain Controller: %s\n\n", 
-               inet_ntoa(ads->ldap_ip));
+               inet_ntoa(ads->ldap.ip));
 
        d_printf("Response Type: ");
        switch (reply.type) {
@@ -160,7 +160,7 @@ static int net_ads_lookup(int argc, const char **argv)
 
        if (!ads->config.realm) {
                ads->config.realm = CONST_DISCARD(char *, opt_target_workgroup);
-               ads->ldap_port = 389;
+               ads->ldap.port = 389;
        }
 
        return net_ads_cldap_netlogon(ads);
@@ -189,11 +189,11 @@ static int net_ads_info(int argc, const char **argv)
                d_fprintf( stderr, "Failed to get server's current time!\n");
        }
 
-       d_printf("LDAP server: %s\n", inet_ntoa(ads->ldap_ip));
+       d_printf("LDAP server: %s\n", inet_ntoa(ads->ldap.ip));
        d_printf("LDAP server name: %s\n", ads->config.ldap_server_name);
        d_printf("Realm: %s\n", ads->config.realm);
        d_printf("Bind Path: %s\n", ads->config.bind_path);
-       d_printf("LDAP port: %d\n", ads->ldap_port);
+       d_printf("LDAP port: %d\n", ads->ldap.port);
        d_printf("Server time: %s\n", http_timestring(ads->config.current_time));
 
        d_printf("KDC server: %s\n", ads->auth.kdc_server );
@@ -380,10 +380,10 @@ static int net_ads_workgroup(int argc, const char **argv)
        
        if (!ads->config.realm) {
                ads->config.realm = CONST_DISCARD(char *, opt_target_workgroup);
-               ads->ldap_port = 389;
+               ads->ldap.port = 389;
        }
        
-       if ( !ads_cldap_netlogon( inet_ntoa(ads->ldap_ip), ads->server.realm, &reply ) ) {
+       if ( !ads_cldap_netlogon( inet_ntoa(ads->ldap.ip), ads->server.realm, &reply ) ) {
                d_fprintf(stderr, "CLDAP query failed!\n");
                return -1;
        }
@@ -545,7 +545,7 @@ static int ads_user_info(int argc, const char **argv)
                return -1;
        }
        
-       grouplist = ldap_get_values((LDAP *)ads->ld,
+       grouplist = ldap_get_values((LDAP *)ads->ldap.ld,
                                    (LDAPMessage *)res, "memberOf");
 
        if (grouplist) {
@@ -831,7 +831,7 @@ static int net_ads_leave(int argc, const char **argv)
 
        /* make RPC calls here */
 
-       if ( !NT_STATUS_IS_OK(connect_to_ipc_krb5(&cli, &ads->ldap_ip, 
+       if ( !NT_STATUS_IS_OK(connect_to_ipc_krb5(&cli, &ads->ldap.ip, 
                ads->config.ldap_server_name)) )
        {
                goto done;
@@ -1338,7 +1338,7 @@ static NTSTATUS net_update_dns_internal(TALLOC_CTX *ctx, ADS_STRUCT *ads,
                char *root_dn;
                ADS_STATUS ads_status;
                
-               if ( !ads->ld ) {
+               if ( !ads->ldap.ld ) {
                        ads_status = ads_connect( ads );
                        if ( !ADS_ERR_OK(ads_status) ) {
                                DEBUG(0,("net_update_dns_internal: Failed to connect to our DC!\n"));
@@ -1568,7 +1568,7 @@ int net_ads_join(int argc, const char **argv)
        password = talloc_strdup(ctx, tmp_password);
        
        nt_status = net_join_domain(ctx, ads->config.ldap_server_name, 
-                                   &ads->ldap_ip, &short_domain_name, &domain_sid, password);
+                                   &ads->ldap.ip, &short_domain_name, &domain_sid, password);
        if ( !NT_STATUS_IS_OK(nt_status) ) {
                DEBUG(1, ("call of net_join_domain failed: %s\n", 
                          get_friendly_nt_error_msg(nt_status)));
@@ -1603,7 +1603,7 @@ int net_ads_join(int argc, const char **argv)
 
        /* Verify that everything is ok */
 
-       if ( net_rpc_join_ok(short_domain_name, ads->config.ldap_server_name, &ads->ldap_ip) != 0 ) {
+       if ( net_rpc_join_ok(short_domain_name, ads->config.ldap_server_name, &ads->ldap.ip) != 0 ) {
                d_fprintf(stderr, "Failed to verify membership in domain!\n");
                goto fail;
        }       
@@ -1985,7 +1985,7 @@ static int net_ads_printer_publish(int argc, const char **argv)
                return -1;
        }
 
-       srv_dn = ldap_get_dn((LDAP *)ads->ld, (LDAPMessage *)res);
+       srv_dn = ldap_get_dn((LDAP *)ads->ldap.ld, (LDAPMessage *)res);
        srv_cn = ldap_explode_dn(srv_dn, 1);
 
        srv_cn_escaped = escape_rdn_val_string_alloc(srv_cn[0]);