17 struct ldapoptions *lo;
19 if(!openldap_ldap_initialized) {
20 openldap_ldap_initialize();
23 if(outvalue == NULL) {
24 /* no place to get to */
29 lo = &openldap_ldap_global_options;
35 case LDAP_OPT_API_INFO: {
36 struct ldapapiinfo *info = (struct ldapapiinfo *) outvalue;
39 /* outvalue must point to an apiinfo structure */
43 if(info->ldapai_info_version != LDAP_API_INFO_VERSION) {
44 /* api info version mismatch */
45 info->ldapai_info_version = LDAP_API_INFO_VERSION;
49 info->ldapai_api_version = LDAP_API_VERSION;
50 info->ldapai_api_version = LDAP_API_VERSION;
51 info->ldapai_protocol_version = LDAP_VERSION_MAX;
52 info->ldapai_extensions = NULL;
53 info->ldapai_vendor_name = strdup(LDAP_VENDOR_NAME);
54 info->ldapai_vendor_version = LDAP_VENDOR_VERSION;
65 * (int *) outvalue = ld->ld_sb.sb_sd;
69 * (int *) outvalue = lo->ldo_deref;
72 case LDAP_OPT_SIZELIMIT:
73 * (int *) outvalue = lo->ldo_sizelimit;
76 case LDAP_OPT_TIMELIMIT:
77 * (int *) outvalue = lo->ldo_timelimit;
80 case LDAP_OPT_REFERRALS:
81 * (int *) outvalue = (int) LDAP_BOOL_GET(lo, LDAP_BOOL_REFERRALS);
84 case LDAP_OPT_RESTART:
85 * (int *) outvalue = (int) LDAP_BOOL_GET(lo, LDAP_BOOL_RESTART);
88 case LDAP_OPT_DNS: /* LDAPv2 */
89 * (int *) outvalue = (int) LDAP_BOOL_GET(lo, LDAP_BOOL_DNS);
92 case LDAP_OPT_PROTOCOL_VERSION:
98 * (int *) outvalue = ld->ld_version;
101 case LDAP_OPT_SERVER_CONTROLS:
102 case LDAP_OPT_CLIENT_CONTROLS:
103 /* not yet supported */
106 case LDAP_OPT_HOST_NAME:
111 * (char **) outvalue = ld->ld_host;
114 case LDAP_OPT_ERROR_NUMBER:
119 * (int *) outvalue = ld->ld_errno;
122 case LDAP_OPT_ERROR_STRING:
123 /* not yet supported */
144 struct ldapoptions *lo;
146 if(!openldap_ldap_initialized) {
147 openldap_ldap_initialize();
150 if(invalue == NULL) {
151 /* no place to set from */
156 lo = &openldap_ldap_global_options;
158 lo = &ld->ld_options;
162 case LDAP_OPT_API_INFO:
168 lo->ldo_deref = * (int *) invalue;
171 case LDAP_OPT_SIZELIMIT:
172 lo->ldo_sizelimit = * (int *) invalue;
175 case LDAP_OPT_TIMELIMIT:
176 lo->ldo_timelimit = * (int *) invalue;
179 case LDAP_OPT_REFERRALS:
180 if((int) invalue == (int) LDAP_OPT_ON) {
181 LDAP_BOOL_SET(lo, LDAP_BOOL_REFERRALS);
183 LDAP_BOOL_CLR(lo, LDAP_BOOL_REFERRALS);
187 case LDAP_OPT_RESTART:
188 if((int) invalue == (int) LDAP_OPT_ON) {
189 LDAP_BOOL_SET(lo, LDAP_BOOL_RESTART);
191 LDAP_BOOL_CLR(lo, LDAP_BOOL_RESTART);
195 case LDAP_OPT_PROTOCOL_VERSION: {
196 int vers = * (int *) invalue;
197 if (vers < LDAP_VERSION_MIN || vers > LDAP_VERSION_MAX) {
201 ld->ld_version = vers;
204 case LDAP_OPT_SERVER_CONTROLS:
205 case LDAP_OPT_CLIENT_CONTROLS:
206 case LDAP_OPT_HOST_NAME:
207 case LDAP_OPT_ERROR_NUMBER:
208 case LDAP_OPT_ERROR_STRING:
209 /* not yet supported */