[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
ADDING A NEW SLAPD BACKEND (ITS#192)
We have been using the ldap from openldap.org site. Currently we are using
ldbm backend with gdbm. I am trying to add a new SLAPD BACKEND. Could
somebody tell me where I can find some detailed documentation for adding a
new backend. I looked at the SLAPD and SLURPD ADMIN GUIDE 12th chapter but
that's not really enough for building a backend. I tried to make changes to
the /ldap/configure file but I guess there should be an easy way of doing
this. I would like to know if there is any detailed documentation on adding
a backend.
I am trying to add a backend called nags. It's really a backend for getting
data from voice machines ( I get the NAME and GREETING). I changed the
slapd.conf file to have my new back end specifications.
****************************************************************************
****************************
/usr/local/etc/openldap/slapd.conf
#######################################################################
# nags database definitions (remote)
#######################################################################
database nags
suffix "o=testnags, c=US"
rootdn "cn=root, o=testnags, c=US"
rootpw nags
#directory of the login file
directory /export/home/ids/snalla/openldap/ldap/usr/tmp
#file name of the file with login passwd information for NAG Server
loginfile nagslogin
****************************************************************************
****************************
I created a new directory ldap/servers/slapd/back-nags and added my files
add.c, modify.c, init.c, bind.c, abandon.c, close.c, compare.c, config.c,
delete.c, back-nags.h, proto-back-nags.h and I copied the Makefile.in from
back-ldbm directory and modified it according to my backend.
****************************************************************************
****************************
/servers/slapd/back-nags/Makefile.in
XSRCS = version.c
SRCS = abandon.c \
add.c \
bind.c \
close.c \
compare.c \
config.c \
delete.c \
entry.c \
init.c \
auth.c \
search.c \
modify.c \
unbind.c
OBJS = abandon.o \
add.o \
bind.o \
close.o \
compare.o \
config.o \
delete.o \
entry.o \
init.o \
auth.o \
search.o \
modify.o \
unbind.o
LDAP_INCDIR= ../../../include
LDAP_LIBDIR= ../../../libraries
BUILD_OPT = "--enable-nags"
BUILD_SRV = @BUILD_NAGS@
XINCPATH = -I.. -I$(srcdir)/..
PROGRAMS = libback-nags.a
all-local-srv: FORCE
$(MAKE) $(MFLAGS) libback-nags.a
libback-ldbm.a: version.o
$(AR) ruv $@ $(OBJS) version.o
@$(RANLIB) $@
@touch ../.backend
version.c: $(OBJS) $(LDAP_LIBDEPEND)
$(RM) $@
(u=$${USER-root} v=`$(CAT) $(VERSIONFILE)` d=`$(PWD)` \
h=`$(HOSTNAME)` t=`$(DATE)`; \
$(SED) -e "s|%WHEN%|$${t}|" \
-e "s|%WHOANDWHERE%|$${u}@$${h}:$${d}|" \
-e "s|%VERSION%|$${v}|" \
< $(srcdir)/Version.c > $@)
****************************************************************************
****************************
I also added my backend in the /servers/slapd/backend.c file.
****************************************************************************
****************************
/servers/slapd/backend.c
#ifdef SLAPD_NAGS
if ( strcasecmp( type, "nags" ) == 0 ) {
be->be_bind = nags_back_bind;
be->be_unbind = nags_back_unbind;
be->be_search = nags_back_search;
be->be_compare = nags_back_compare;
be->be_modify = nags_back_modify;
be->be_modrdn = nags_back_modrdn;
be->be_add = nags_back_add;
be->be_delete = nags_back_delete;
be->be_abandon = nags_back_abandon;
be->be_config = nags_back_config;
be->be_init = nags_back_init;
be->be_close = nags_back_close;
#ifdef SLAPD_ACLGROUPS
be->be_group = nags_back_group;
#endif
be->be_type = "nags";
foundit = 1;
}
#endif
****************************************************************************
*****************************
After all these what are the steps that I should follow for building my
backend and enabling it. I tried an option of modifying the /ldap/configure
file and adding some lines as given below for enabling my backend and
generating makefile in my back-nags directory.
****************************************************************************
*****************************
/ldap/configure
# OpenLDAP --enable-nags
# Check whether --enable-nags or --disable-nags was given.
if test "${enable_nags+set}" = set; then
enableval="$enable_nags"
ol_arg=invalid
for ol_val in auto yes no ; do
if test "$enableval" = "$ol_val" ; then
ol_arg="$ol_val"
fi
done
if test "$ol_arg" = "invalid" ; then
{ echo "configure: error: bad value $enableval for
--enable-nags" 1>&2; exit 1; }
fi
ol_enable_nags="$ol_arg"
else
ol_enable_nags="yes"
fi
# end --enable-nags
~~
~~
if test $ol_enable_slapd = no ; then
if test $ol_enable_ldbm = yes ; then
echo "configure: warning: slapd disabled, ignoring
--enable_ldbm argument" 1>&2
fi
if test $ol_enable_passwd = yes ; then
echo "configure: warning: slapd disabled, ignoring
--enable_passwd argument" 1>&2
fi
if test $ol_enable_shell = yes ; then
echo "configure: warning: slapd disabled, ignoring
--enable_shell argument" 1>&2
fi
if test $ol_enable_nags = yes ; then
echo "configure: warning: slapd disabled, ignoring
--enable_nags argument" 1>&2
fi
if test $ol_enable_aclgroups = yes ; then
echo "configure: warning: slapd disabled, ignoring
--enable_aclgroups argument" 1>&2
fi
~~
~~
# force settings to no
ol_enable_ldbm=no
ol_enable_shell=no
ol_enable_nags=no
ol_enable_passwd=no
ol_enable_aclgroups=no
ol_enable_wrappers=no
~~
~~
if test "$ol_enable_nags" != no ; then
cat >> confdefs.h <<\EOF
#define SLAPD_NAGS 1
EOF
BUILD_SLAPD=yes
BUILD_NAGS=yes
fi
~~
~~
servers/slapd/back-nags/Makefile:build/top.mk:servers/slapd/back-nags/Makefi
le.in:build/srv.mk \
~~
~~
****************************************************************************
*****************************
Then I tried to configure with "./configure
--prefix=~snalla/openldap/ldap/usr/local --enable-nags=yes
--with-ldbm-api=gdbm --with-threads=lwp" options. The configuration went
fine it generated the Makefile in my back-nags directory. But when I do a
make depend it does not build the files in the back-nags directory it gives
the following lines.
cd back-nags; make depend
run configure with --enable-nags to depend libback-nags.a
I cannot build the files in the back-nags directory. What should I be doing
to build the files in the new back end and enabling that backend. I don't
think changing the configure file is the option. I guess there should be
something simple that we should be doing to add a new backend and enable it.
Could somebody please answer this as soon as possible.
Thanks,
Suneetha R. Nalla
Suneetha.Nalla@ons.octel.com