summaryrefslogtreecommitdiffstats
path: root/ldap/servers/snmp
diff options
context:
space:
mode:
authorRich Megginson <rmeggins@redhat.com>2009-07-06 12:11:01 -0600
committerRich Megginson <rmeggins@redhat.com>2009-07-07 08:32:42 -0600
commit209521323f731daad54682fd98715f7b22c88c78 (patch)
tree74a1fa8df06641fe543c8518e4db4357ab610828 /ldap/servers/snmp
parent3116dbec570b65d2d0a1df5bd000f6e63439e8ee (diff)
downloadds-209521323f731daad54682fd98715f7b22c88c78.tar.gz
ds-209521323f731daad54682fd98715f7b22c88c78.tar.xz
ds-209521323f731daad54682fd98715f7b22c88c78.zip
OpenLDAP support
These changes allow the server to be built with OpenLDAP (2.4.17+). A brief summary of the changes: * #defines not provided by OpenLDAP were copied into slapi-plugin.h and protected with #ifndef blocks * where it made sense, I created slapi wrapper functions for things like URL and LDIF processing to abstract way the differences in the APIs * I created a new file utf8.c which contains the UTF8 functions from MozLDAP - this is only compiled when using OpenLDAP * I tried to clean up the code - use the _ext versions of LDAP functions everywhere since the older versions should be considered deprecated * I removed some unused code NOTE that this should still be considered a work in progress since it depends on functionality not yet present in a released version of OpenLDAP, for NSS crypto and for the LDIF public API.
Diffstat (limited to 'ldap/servers/snmp')
-rw-r--r--ldap/servers/snmp/main.c32
1 files changed, 28 insertions, 4 deletions
diff --git a/ldap/servers/snmp/main.c b/ldap/servers/snmp/main.c
index 89732faf..5b2ad68a 100644
--- a/ldap/servers/snmp/main.c
+++ b/ldap/servers/snmp/main.c
@@ -47,6 +47,7 @@
#include <signal.h>
#include <sys/stat.h>
#include "ldap-agent.h"
+#include "ldap.h"
#include "ldif.h"
static char *agentx_master = NULL;
@@ -245,7 +246,12 @@ load_config(char *conf_path)
{
server_instance *serv_p = NULL;
FILE *conf_file = NULL;
+#if defined(USE_OPENLDAP)
+ LDIFFP *dse_fp = NULL;
+ int buflen;
+#else
FILE *dse_fp = NULL;
+#endif
char line[MAXLINE];
char *p = NULL;
int error = 0;
@@ -371,7 +377,12 @@ load_config(char *conf_path)
}
/* Open dse.ldif */
- if ((dse_fp = fopen(serv_p->dse_ldif, "r")) == NULL) {
+#if defined(USE_OPENLDAP)
+ dse_fp = ldif_open(serv_p->dse_ldif, "r");
+#else
+ dse_fp = fopen(serv_p->dse_ldif, "r");
+#endif
+ if (dse_fp == NULL) {
printf("ldap-agent: Error opening server config file: %s\n",
serv_p->dse_ldif);
error = 1;
@@ -386,12 +397,20 @@ load_config(char *conf_path)
* the pointer that is passed to it, so we need to save a
* pointer to the beginning of the entry so we can free it
* later. */
- while ((entry = ldif_get_entry(dse_fp, &lineno)) != NULL) {
+#if defined(USE_OPENLDAP)
+ while (ldif_read_record(dse_fp, &lineno, &entry, &buflen))
+#else
+ while ((entry = ldif_get_entry(dse_fp, &lineno)) != NULL)
+#endif
+ {
char *entryp = entry;
char *attr = NULL;
char *val = NULL;
+#if defined(USE_OPENLDAP)
+ ber_len_t vlen;
+#else
int vlen;
-
+#endif
/* Check if this is the cn=config entry */
ldif_parse_line(ldif_getline(&entryp), &attr, &val, &vlen);
if ((strcmp(attr, "dn") == 0) &&
@@ -470,8 +489,13 @@ load_config(char *conf_path)
close_and_exit:
if (conf_file)
fclose(conf_file);
- if (dse_fp)
+ if (dse_fp) {
+#if defined(USE_OPENLDAP)
+ ldif_close(dse_fp);
+#else
fclose(dse_fp);
+#endif
+ }
if (error)
exit(error);
}