]> git.sur5r.net Git - openldap/blob - libraries/libldap/apitest.c
Add OpenLDAP RCSid to *.[ch] in clients, libraries, and servers.
[openldap] / libraries / libldap / apitest.c
1 /* $OpenLDAP$ */
2 /*
3  * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
4  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
5  */
6 /*
7  * OpenLDAP API Test
8  *      Written by: Kurt Zeilenga
9  *
10  * This program is designed to test API features of implementations
11  * of the IETF draft specifications.
12  *
13  */
14 #include "portable.h"
15
16 #include <ac/stdlib.h>
17
18 #include <stdio.h>
19
20 #include <ldap.h>
21
22 int
23 main(int argc, char **argv)
24 {
25         LDAPAPIInfo api;
26         int ival;
27         char *sval;
28
29         printf("Compile time API Information\n");
30
31 #ifdef LDAP_API_INFO_VERSION
32         api.ldapai_info_version = LDAP_API_INFO_VERSION;
33         printf("  API Info version:  %d\n", (int) api.ldapai_info_version);
34 #else
35         api.ldapai_info_version = 1;
36         printf("  API Info version:  unknown\n");
37 #endif
38
39 #ifdef LDAP_FEATURE_INFO_VERSION
40         printf("  Feature Info version:  %d\n", (int) LDAP_FEATURE_INFO_VERSION);
41 #else
42         printf("  Feature Info version:  unknown\n");
43         api.ldapai_info_version = 1;
44 #endif
45
46 #ifdef LDAP_API_VERSION
47         printf("  API version:       %d\n", (int) LDAP_API_VERSION);
48 #else
49         printf("  API version:       unknown\n");
50 #endif
51
52 #ifdef LDAP_VERSION
53         printf("  Protocol Version:  %d\n", (int) LDAP_VERSION);
54 #else
55         printf("  Protocol Version:  unknown\n");
56 #endif
57 #ifdef LDAP_VERSION_MIN
58         printf("  Protocol Min:      %d\n", (int) LDAP_VERSION_MIN);
59 #else
60         printf("  Protocol Min:      unknown\n");
61 #endif
62 #ifdef LDAP_VERSION_MAX
63         printf("  Protocol Max:      %d\n", (int) LDAP_VERSION_MAX);
64 #else
65         printf("  Protocol Max:      unknown\n");
66 #endif
67 #ifdef LDAP_VENDOR_NAME
68         printf("  Vendor Name:       %s\n", LDAP_VENDOR_NAME);
69 #else
70         printf("  Vendor Name:       unknown\n");
71 #endif
72 #ifdef LDAP_VENDOR_VERSION
73         printf("  Vendor Version:    %d\n", (int) LDAP_VENDOR_VERSION);
74 #else
75         printf("  Vendor Version:    unknown\n");
76 #endif
77
78         if(ldap_get_option(NULL, LDAP_OPT_API_INFO, &api) != LDAP_SUCCESS) {
79                 fprintf(stderr, "%s: ldap_get_option(API_INFO) failed\n", argv[0]);
80                 return EXIT_FAILURE;
81         }
82
83         printf("\nExecution time API Information\n");
84         printf("  API Info version:  %d\n", api.ldapai_info_version);
85
86         if (api.ldapai_info_version != LDAP_API_INFO_VERSION) {
87                 printf(" API INFO version mismatch: got %d, expected %d\n",
88                         api.ldapai_info_version, LDAP_API_INFO_VERSION);
89                 return EXIT_FAILURE;
90         }
91
92         printf("  API Version:       %d\n", api.ldapai_api_version);
93         printf("  Protocol Max:      %d\n", api.ldapai_protocol_version);
94
95         if(api.ldapai_extensions == NULL) {
96                 printf("  Extensions:        none\n");
97
98         } else {
99                 int i;
100                 for(i=0; api.ldapai_extensions[i] != NULL; i++) /* empty */;
101                 printf("  Extensions:        %d\n", i);
102                 for(i=0; api.ldapai_extensions[i] != NULL; i++) {
103 #ifdef LDAP_OPT_API_FEATURE_INFO
104                         LDAPAPIFeatureInfo fi;
105                         fi.ldapaif_info_version = LDAP_FEATURE_INFO_VERSION;
106                         fi.ldapaif_name = api.ldapai_extensions[i];
107                         fi.ldapaif_version = 0;
108
109                         if( ldap_get_option(NULL, LDAP_OPT_API_FEATURE_INFO, &fi) == LDAP_SUCCESS ) {
110                                 if(fi.ldapaif_info_version != LDAP_FEATURE_INFO_VERSION) {
111                                         printf("                     %s feature info mismatch: got %d, expected %d\n",
112                                                 api.ldapai_extensions[i],
113                                                 LDAP_FEATURE_INFO_VERSION,
114                                                 fi.ldapaif_info_version);
115
116                                 } else {
117                                         printf("                     %s: version %d\n",
118                                                 fi.ldapaif_name,
119                                                 fi.ldapaif_version);
120                                 }
121
122                         } else {
123                                 printf("                     %s (NO FEATURE INFO)\n",
124                                         api.ldapai_extensions[i]);
125                         }
126
127 #else
128                         printf("                     %s\n",
129                                 api.ldapai_extensions[i]);
130 #endif
131
132                         ldap_memfree(api.ldapai_extensions[i]);
133                 }
134                 ldap_memfree(api.ldapai_extensions);
135         }
136
137         printf("  Vendor Name:       %s\n", api.ldapai_vendor_name);
138         ldap_memfree(api.ldapai_vendor_name);
139
140         printf("  Vendor Version:    %d\n", api.ldapai_vendor_version);
141
142         printf("\nExecution time Default Options\n");
143
144         if(ldap_get_option(NULL, LDAP_OPT_DEREF, &ival) != LDAP_SUCCESS) {
145                 fprintf(stderr, "%s: ldap_get_option(api) failed\n", argv[0]);
146                 return EXIT_FAILURE;
147         }
148         printf("  DEREF:             %d\n", ival);
149
150         if(ldap_get_option(NULL, LDAP_OPT_SIZELIMIT, &ival) != LDAP_SUCCESS) {
151                 fprintf(stderr, "%s: ldap_get_option(sizelimit) failed\n", argv[0]);
152                 return EXIT_FAILURE;
153         }
154         printf("  SIZELIMIT:         %d\n", ival);
155
156         if(ldap_get_option(NULL, LDAP_OPT_TIMELIMIT, &ival) != LDAP_SUCCESS) {
157                 fprintf(stderr, "%s: ldap_get_option(timelimit) failed\n", argv[0]);
158                 return EXIT_FAILURE;
159         }
160         printf("  TIMELIMIT:         %d\n", ival);
161
162         if(ldap_get_option(NULL, LDAP_OPT_REFERRALS, &ival) != LDAP_SUCCESS) {
163                 fprintf(stderr, "%s: ldap_get_option(referrals) failed\n", argv[0]);
164                 return EXIT_FAILURE;
165         }
166         printf("  REFERRALS:         %s\n", ival ? "on" : "off");
167
168         if(ldap_get_option(NULL, LDAP_OPT_RESTART, &ival) != LDAP_SUCCESS) {
169                 fprintf(stderr, "%s: ldap_get_option(restart) failed\n", argv[0]);
170                 return EXIT_FAILURE;
171         }
172         printf("  RESTART:           %s\n", ival ? "on" : "off");
173
174         if(ldap_get_option(NULL, LDAP_OPT_PROTOCOL_VERSION, &ival) != LDAP_SUCCESS) {
175                 fprintf(stderr, "%s: ldap_get_option(protocol version) failed\n", argv[0]);
176                 return EXIT_FAILURE;
177         }
178         printf("  PROTOCOL VERSION:  %d\n", ival);
179
180         if(ldap_get_option(NULL, LDAP_OPT_HOST_NAME, &sval) != LDAP_SUCCESS) {
181                 fprintf(stderr, "%s: ldap_get_option(host name) failed\n", argv[0]);
182                 return EXIT_FAILURE;
183         }
184         if( sval != NULL ) {
185                 printf("  HOST NAME:         %s\n", sval);
186                 ldap_memfree(sval);
187         } else {
188                 puts("  HOST NAME:         <not set>");
189         }
190
191         return EXIT_SUCCESS;
192 }