]> git.sur5r.net Git - openldap/blob - libraries/libldap/apitest.c
Add LDAP_OPT_API_FEATURE_INFO to obtain feature info (ie: version)
[openldap] / libraries / libldap / apitest.c
1 /*
2  * OpenLDAP API Test
3  *      Written by: Kurt Zeilenga
4  *
5  * This program is designed to test libldap API for conformance
6  * to draft-api-ldapext-ldap-c-api-01.txt.
7  */
8 #include "portable.h"
9
10 #include <stdio.h>
11 #include <stdlib.h>
12 #include <ac/time.h>
13
14 #include "lber.h"
15 #include "ldap.h"
16
17 int
18 main(int argc, char **argv)
19 {
20         LDAPAPIInfo api;
21         int ival;
22         char *sval;
23
24 #ifdef LDAP_API_INFO_VERSION
25         api.ldapai_info_version = LDAP_API_INFO_VERSION;
26 #else
27         api.ldapai_info_version = 1;
28 #endif
29
30         printf("Compile time API Information\n");
31         printf("  API Info version:  %d\n", api.ldapai_info_version);
32         printf("  API version:       %d\n", LDAP_API_VERSION);
33 #ifdef LDAP_VERSION
34         printf("  Protocol Version:  %d\n", LDAP_VERSION);
35 #else
36         printf("  Protocol Version:  unknown\n");
37 #endif
38 #ifdef LDAP_VERSION_MIN
39         printf("  Protocol Min:      %d\n", LDAP_VERSION_MIN);
40 #else
41         printf("  Protocol Min:      unknown\n");
42 #endif
43 #ifdef LDAP_VERSION_MAX
44         printf("  Protocol Max:      %d\n", LDAP_VERSION_MAX);
45 #else
46         printf("  Protocol Max:      unknown\n");
47 #endif
48 #ifdef LDAP_VENDOR_NAME
49         printf("  Vendor Name:       %s\n", LDAP_VENDOR_NAME);
50 #else
51         printf("  Vendor Name:       unknown\n");
52 #endif
53 #ifdef LDAP_VENDOR_VERSION
54         printf("  Vendor Version:    %d\n", LDAP_VENDOR_VERSION);
55 #else
56         printf("  Vendor Version:    unknown\n");
57 #endif
58
59         if(ldap_get_option(NULL, LDAP_OPT_API_INFO, &api) != LDAP_SUCCESS) {
60                 fprintf(stderr, "%s: ldap_get_option(api) failed\n", argv[0]);
61                 exit(-1);
62         }
63
64         printf("\nExecution time API Information\n");
65         printf("  API Info version:  %d\n", api.ldapai_info_version);
66
67         if (api.ldapai_info_version != LDAP_API_INFO_VERSION) {
68                 printf(" API INFO version mismatch!\n");
69                 exit(-1);
70         }
71
72         printf("  API Version:       %d\n", api.ldapai_api_version);
73         printf("  Protocol Max:      %d\n", api.ldapai_protocol_version);
74
75         if(api.ldapai_extensions == NULL) {
76                 printf("  Extensions:        none\n");
77
78         } else {
79                 int i;
80                 for(i=0; api.ldapai_extensions[i] != NULL; i++) /* empty */;
81                 printf("  Extensions:        %d\n", i);
82                 for(i=0; api.ldapai_extensions[i] != NULL; i++) {
83 #ifndef LDAP_API_FEATURE_INFO
84                         printf("                     %s\n",
85                                 api.ldapai_extensions[i]);
86 #else
87                         LDAPAPIFeatureInfo fi;
88                         fi.ldapaif_name = api.ldapai_extensions[i];
89                         fi.ldapaif_version = 0;
90
91                         ldap_get_option(NULL, LDAP_OPT_API_FEATURE_INFO, &fi);
92
93                         printf("                     %s (%d)\n",
94                                 api.ldapai_extensions[i], fi.ldapaif_version);
95 #endif
96                 }
97         }
98
99         printf("  Vendor Name:       %s\n", api.ldapai_vendor_name);
100         printf("  Vendor Version:    %d\n", api.ldapai_vendor_version);
101
102         printf("\nExecution time Default Options\n");
103
104         if(ldap_get_option(NULL, LDAP_OPT_DEREF, &ival) != LDAP_SUCCESS) {
105                 fprintf(stderr, "%s: ldap_get_option(api) failed\n", argv[0]);
106                 exit(-1);
107         }
108         printf("  DEREF:             %d\n", ival);
109
110         if(ldap_get_option(NULL, LDAP_OPT_SIZELIMIT, &ival) != LDAP_SUCCESS) {
111                 fprintf(stderr, "%s: ldap_get_option(sizelimit) failed\n", argv[0]);
112                 exit(-1);
113         }
114         printf("  SIZELIMIT:         %d\n", ival);
115
116         if(ldap_get_option(NULL, LDAP_OPT_TIMELIMIT, &ival) != LDAP_SUCCESS) {
117                 fprintf(stderr, "%s: ldap_get_option(timelimit) failed\n", argv[0]);
118                 exit(-1);
119         }
120         printf("  TIMELIMIT:         %d\n", ival);
121
122         if(ldap_get_option(NULL, LDAP_OPT_REFERRALS, &ival) != LDAP_SUCCESS) {
123                 fprintf(stderr, "%s: ldap_get_option(referrals) failed\n", argv[0]);
124                 exit(-1);
125         }
126         printf("  REFERRALS:         %s\n",
127                 ival == (int) LDAP_OPT_ON ? "on" : "off");
128
129         if(ldap_get_option(NULL, LDAP_OPT_RESTART, &ival) != LDAP_SUCCESS) {
130                 fprintf(stderr, "%s: ldap_get_option(restart) failed\n", argv[0]);
131                 exit(-1);
132         }
133         printf("  RESTART:           %s\n",
134                 ival == (int) LDAP_OPT_ON ? "on" : "off");
135
136         if(ldap_get_option(NULL, LDAP_OPT_PROTOCOL_VERSION, &ival) != LDAP_SUCCESS) {
137                 fprintf(stderr, "%s: ldap_get_option(protocol version) failed\n", argv[0]);
138                 exit(-1);
139         }
140         printf("  PROTOCOL VERSION:  %d\n", ival);
141
142         if(ldap_get_option(NULL, LDAP_OPT_HOST_NAME, &sval) != LDAP_SUCCESS) {
143                 fprintf(stderr, "%s: ldap_get_option(host name) failed\n", argv[0]);
144                 exit(-1);
145         }
146         printf("  HOST NAME:         %s\n", sval);
147
148         exit(0);
149         return 0;
150 }