summaryrefslogtreecommitdiff
path: root/databases/nss_ldap
diff options
context:
space:
mode:
authordrochner <drochner>2005-08-08 09:47:42 +0000
committerdrochner <drochner>2005-08-08 09:47:42 +0000
commit0b92a49d5d0bfc8f27be735b0b60bb6dcdb8b6cb (patch)
treef2ddec8470d8e1f063924b5d4446f4deeb808412 /databases/nss_ldap
parentdb78f40ca5a6a57aecf84ab8b3623c09375b9d21 (diff)
downloadpkgsrc-0b92a49d5d0bfc8f27be735b0b60bb6dcdb8b6cb.tar.gz
import nss_ldap-239, an nsswitch plugin for LDAP lookup
(passwd and group for now)
Diffstat (limited to 'databases/nss_ldap')
-rw-r--r--databases/nss_ldap/DESCR4
-rw-r--r--databases/nss_ldap/Makefile23
-rw-r--r--databases/nss_ldap/PLIST5
-rw-r--r--databases/nss_ldap/distinfo8
-rw-r--r--databases/nss_ldap/files/netbsd.c447
-rw-r--r--databases/nss_ldap/files/netbsd.h12
-rw-r--r--databases/nss_ldap/patches/patch-ab12
-rw-r--r--databases/nss_ldap/patches/patch-af30
-rw-r--r--databases/nss_ldap/patches/patch-ag12
9 files changed, 553 insertions, 0 deletions
diff --git a/databases/nss_ldap/DESCR b/databases/nss_ldap/DESCR
new file mode 100644
index 00000000000..b745da37611
--- /dev/null
+++ b/databases/nss_ldap/DESCR
@@ -0,0 +1,4 @@
+This is the nss_ldap library, an LDAP module for the Solaris Nameservice
+Switch (NSS), the GNU libc NSS, and the ISC BIND IRS (used on BSDI
+and IRS).
+The LDAP schema used is described in RFC 2307
diff --git a/databases/nss_ldap/Makefile b/databases/nss_ldap/Makefile
new file mode 100644
index 00000000000..aae98e6b00d
--- /dev/null
+++ b/databases/nss_ldap/Makefile
@@ -0,0 +1,23 @@
+# $NetBSD: Makefile,v 1.1.1.1 2005/08/08 09:47:42 drochner Exp $
+#
+
+DISTNAME= nss_ldap-239
+CATEGORIES= databases
+MASTER_SITES= http://www.padl.com/download/
+
+MAINTAINER= tech-pkg@NetBSD.org
+HOMEPAGE= http://www.padl.com/OSS/nss_ldap.html
+COMMENT= LDAP client for nsswitch
+
+GNU_CONFIGURE= yes
+USE_TOOLS+= gmake
+
+CONFIGURE_ARGS+= --with-ldap-conf-file=/etc/nss_ldap.conf
+CONFIGURE_ARGS+= --with-ldap-secret-file=/etc/nss_ldap.secret
+
+pre-build:
+ ${CP} ${FILESDIR}/netbsd.c ${FILESDIR}/netbsd.h ${WRKSRC}
+ ${LN} -s /usr/include/nsswitch.h ${BUILDLINK_DIR}/include/nss.h
+
+.include "../../databases/openldap/buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/databases/nss_ldap/PLIST b/databases/nss_ldap/PLIST
new file mode 100644
index 00000000000..73aa0439ed8
--- /dev/null
+++ b/databases/nss_ldap/PLIST
@@ -0,0 +1,5 @@
+@comment $NetBSD: PLIST,v 1.1.1.1 2005/08/08 09:47:42 drochner Exp $
+etc/nsswitch.ldap
+lib/nss_ldap.so
+lib/nss_ldap.so.1
+man/man5/nss_ldap.5
diff --git a/databases/nss_ldap/distinfo b/databases/nss_ldap/distinfo
new file mode 100644
index 00000000000..f51fef534d0
--- /dev/null
+++ b/databases/nss_ldap/distinfo
@@ -0,0 +1,8 @@
+$NetBSD: distinfo,v 1.1.1.1 2005/08/08 09:47:42 drochner Exp $
+
+SHA1 (nss_ldap-239.tar.gz) = beee30b433a01dccd863e7a0cdb7fe87cefda7fd
+RMD160 (nss_ldap-239.tar.gz) = 525ed402ef5959a2740a7539c309c478a4765381
+Size (nss_ldap-239.tar.gz) = 222276 bytes
+SHA1 (patch-ab) = 01493e92ffff0125dd3267810ee33cdeaab32ab2
+SHA1 (patch-af) = 54251bd1798ce4137760b8a84997cbe23e5f1fa0
+SHA1 (patch-ag) = 95741f39fb03195b3238d4f9c24360049fdd3698
diff --git a/databases/nss_ldap/files/netbsd.c b/databases/nss_ldap/files/netbsd.c
new file mode 100644
index 00000000000..f7b7110299e
--- /dev/null
+++ b/databases/nss_ldap/files/netbsd.c
@@ -0,0 +1,447 @@
+/* $NetBSD: netbsd.c,v 1.1.1.1 2005/08/08 09:47:42 drochner Exp $ */
+
+#include <sys/param.h>
+#include <pwd.h>
+#include <grp.h>
+#include <nsswitch.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include "netbsd.h"
+typedef enum nss_status NSS_STATUS;
+
+extern NSS_STATUS _nss_ldap_setpwent(void);
+static int netbsd_setpwent(void *, void *, va_list);
+static int netbsd_setpassent(void *, void *, va_list);
+extern NSS_STATUS _nss_ldap_endpwent(void);
+static int netbsd_endpwent(void *, void *, va_list);
+extern NSS_STATUS _nss_ldap_getpwent_r(struct passwd *,
+ char *, size_t, int *);
+static int netbsd_getpwent(void *, void *, va_list);
+static int netbsd_getpwent_r(void *, void *, va_list);
+extern NSS_STATUS _nss_ldap_getpwnam_r(const char *, struct passwd *,
+ char *, size_t, int *);
+static int netbsd_getpwnam(void *, void *, va_list);
+static int netbsd_getpwnam_r(void *, void *, va_list);
+extern NSS_STATUS _nss_ldap_getpwuid_r(uid_t, struct passwd *,
+ char *, size_t, int *);
+static int netbsd_getpwuid(void *, void *, va_list);
+static int netbsd_getpwuid_r(void *, void *, va_list);
+
+extern NSS_STATUS _nss_ldap_setgrent(void);
+static int netbsd_setgrent(void *, void *, va_list);
+static int netbsd_setgroupent(void *, void *, va_list);
+extern NSS_STATUS _nss_ldap_endgrent(void);
+static int netbsd_endgrent(void *, void *, va_list);
+extern NSS_STATUS _nss_ldap_getgrent_r(struct group *,
+ char *, size_t, int *);
+static int netbsd_getgrent(void *, void *, va_list);
+static int netbsd_getgrent_r(void *, void *, va_list);
+extern NSS_STATUS _nss_ldap_getgrnam_r(const char *, struct group *,
+ char *, size_t, int *);
+static int netbsd_getgrnam(void *, void *, va_list);
+static int netbsd_getgrnam_r(void *, void *, va_list);
+extern NSS_STATUS _nss_ldap_getgrgid_r(gid_t, struct group *,
+ char *, size_t, int *);
+static int netbsd_getgrgid(void *, void *, va_list);
+static int netbsd_getgrgid_r(void *, void *, va_list);
+
+static int nss2netbsderr[] = {
+ NS_SUCCESS, NS_NOTFOUND, NS_UNAVAIL, NS_TRYAGAIN, NS_RETURN
+};
+static struct passwd rpw;
+static struct group rg;
+static char pwbuf[1024], grpbuf[1024]; /* two necessary? */
+
+static ns_mtab methods[] = {
+ { NSDB_PASSWD, "setpwent", netbsd_setpwent, 0 },
+ { NSDB_PASSWD, "setpassent", netbsd_setpassent, 0 },
+ { NSDB_PASSWD, "endpwent", netbsd_endpwent, 0 },
+ { NSDB_PASSWD, "getpwent", netbsd_getpwent, 0 },
+ { NSDB_PASSWD, "getpwent_r", netbsd_getpwent_r, 0 },
+ { NSDB_PASSWD, "getpwnam", netbsd_getpwnam, 0 },
+ { NSDB_PASSWD, "getpwnam_r", netbsd_getpwnam_r, 0 },
+ { NSDB_PASSWD, "getpwuid", netbsd_getpwuid, 0 },
+ { NSDB_PASSWD, "getpwuid_r", netbsd_getpwuid_r, 0 },
+
+ { NSDB_GROUP, "setgrent", netbsd_setgrent, 0 },
+ { NSDB_GROUP, "setgroupent", netbsd_setgroupent, 0 },
+ { NSDB_GROUP, "endgrent", netbsd_endgrent, 0 },
+ { NSDB_GROUP, "getgrent", netbsd_getgrent, 0 },
+ { NSDB_GROUP, "getgrent_r", netbsd_getgrent_r, 0 },
+ { NSDB_GROUP, "getgrnam", netbsd_getgrnam, 0 },
+ { NSDB_GROUP, "getgrnam_r", netbsd_getgrnam_r, 0 },
+ { NSDB_GROUP, "getgrgid", netbsd_getgrgid, 0 },
+ { NSDB_GROUP, "getgrgid_r", netbsd_getgrgid_r, 0 },
+};
+
+static int
+netbsd_setpwent(void *rv, void *cb_data, va_list ap)
+{
+ NSS_STATUS s;
+
+ s = _nss_ldap_setpwent();
+
+ return nss2netbsderr[s];
+}
+
+static int
+netbsd_setpassent(void *rv, void *cb_data, va_list ap)
+{
+ NSS_STATUS s;
+ int *retval = va_arg(ap, int *);
+ int stayopen = va_arg(ap, int);
+
+ /* XXX stayopen ignored */
+ s = _nss_ldap_setpwent();
+
+ if (s == NSS_STATUS_SUCCESS)
+ *retval = 1;
+ else
+ *retval = 0;
+
+ return nss2netbsderr[s];
+}
+
+static int
+netbsd_endpwent(void *rv, void *cb_data, va_list ap)
+{
+ NSS_STATUS s;
+
+ s = _nss_ldap_endpwent();
+
+ return nss2netbsderr[s];
+}
+
+static int
+netbsd_getpwent(void *rv, void *cb_data, va_list ap)
+{
+ int err;
+ NSS_STATUS s;
+ struct passwd **retval = va_arg(ap, struct passwd **);
+
+ memset(&rpw, 0, sizeof(rpw));
+ s = _nss_ldap_getpwent_r(&rpw, pwbuf, sizeof(pwbuf), &err);
+
+ if (s == NSS_STATUS_SUCCESS) {
+ rpw.pw_class = ""; /* XXX */
+ *retval = &rpw;
+ } else
+ *retval = 0;
+
+ return nss2netbsderr[s];
+}
+
+static int
+netbsd_getpwent_r(void *rv, void *cb_data, va_list ap)
+{
+ int err;
+ NSS_STATUS s;
+ int *retval = va_arg(ap, int *);
+ struct passwd *pw = va_arg(ap, struct passwd *);
+ char *buf = va_arg(ap, char *);
+ size_t buflen = va_arg(ap, size_t);
+ struct passwd **result = va_arg(ap, struct passwd **);
+
+ memset(pw, 0, sizeof(*pw));
+ s = _nss_ldap_getpwent_r(pw, buf, buflen, &err);
+
+ if (s == NSS_STATUS_SUCCESS) {
+ pw->pw_class = ""; /* XXX */
+ *result = pw;
+ } else
+ *result = 0;
+
+ if (s == NSS_STATUS_SUCCESS || s == NSS_STATUS_NOTFOUND)
+ *retval = 0;
+ else
+ *retval = 1;
+
+ return nss2netbsderr[s];
+}
+
+static int
+netbsd_getpwnam(void *rv, void *cb_data, va_list ap)
+{
+ int err;
+ NSS_STATUS s;
+ struct passwd **retval = va_arg(ap, struct passwd **);
+ const char *name = va_arg(ap, const char *);
+
+ memset(&rpw, 0, sizeof(rpw));
+ s = _nss_ldap_getpwnam_r(name, &rpw, pwbuf, sizeof(pwbuf), &err);
+
+ if (s == NSS_STATUS_SUCCESS) {
+ rpw.pw_class = ""; /* XXX */
+ *retval = &rpw;
+ } else
+ *retval = 0;
+
+ return nss2netbsderr[s];
+}
+
+static int
+netbsd_getpwnam_r(void *rv, void *cb_data, va_list ap)
+{
+ int err;
+ NSS_STATUS s;
+ int *retval = va_arg(ap, int *);
+ const char *name = va_arg(ap, const char *);
+ struct passwd *pw = va_arg(ap, struct passwd *);
+ char *buf = va_arg(ap, char *);
+ size_t buflen = va_arg(ap, size_t);
+ struct passwd **result = va_arg(ap, struct passwd **);
+
+ memset(pw, 0, sizeof(*pw));
+ s = _nss_ldap_getpwnam_r(name, pw, buf, buflen, &err);
+
+ if (s == NSS_STATUS_SUCCESS) {
+ pw->pw_class = ""; /* XXX */
+ *result = pw;
+ } else
+ *result = 0;
+
+ if (s == NSS_STATUS_SUCCESS || s == NSS_STATUS_NOTFOUND)
+ *retval = 0;
+ else
+ *retval = 1;
+
+ return nss2netbsderr[s];
+}
+
+static int
+netbsd_getpwuid(void *rv, void *cb_data, va_list ap)
+{
+ int err;
+ NSS_STATUS s;
+ struct passwd **retval = va_arg(ap, struct passwd **);
+ uid_t uid = va_arg(ap, uid_t);
+
+ memset(&rpw, 0, sizeof(rpw));
+ s = _nss_ldap_getpwuid_r(uid, &rpw, pwbuf, sizeof(pwbuf), &err);
+
+ if (s == NSS_STATUS_SUCCESS) {
+ rpw.pw_class = ""; /* XXX */
+ *retval = &rpw;
+ } else
+ *retval = 0;
+
+ return nss2netbsderr[s];
+}
+
+static int
+netbsd_getpwuid_r(void *rv, void *cb_data, va_list ap)
+{
+ int err;
+ NSS_STATUS s;
+ int *retval = va_arg(ap, int *);
+ uid_t uid = va_arg(ap, uid_t);
+ struct passwd *pw = va_arg(ap, struct passwd *);
+ char *buf = va_arg(ap, char *);
+ size_t buflen = va_arg(ap, size_t);
+ struct passwd **result = va_arg(ap, struct passwd **);
+
+ memset(pw, 0, sizeof(*pw));
+ s = _nss_ldap_getpwuid_r(uid, pw, buf, buflen, &err);
+
+ if (s == NSS_STATUS_SUCCESS) {
+ pw->pw_class = ""; /* XXX */
+ *result = pw;
+ } else
+ *result = 0;
+
+ if (s == NSS_STATUS_SUCCESS || s == NSS_STATUS_NOTFOUND)
+ *retval = 0;
+ else
+ *retval = 1;
+
+ return nss2netbsderr[s];
+}
+
+
+static int
+netbsd_setgrent(void *rv, void *cb_data, va_list ap)
+{
+ NSS_STATUS s;
+
+ s = _nss_ldap_setgrent();
+
+ return nss2netbsderr[s];
+}
+
+static int
+netbsd_setgroupent(void *rv, void *cb_data, va_list ap)
+{
+ NSS_STATUS s;
+ int *retval = va_arg(ap, int *);
+ int stayopen = va_arg(ap, int);
+
+ /* XXX stayopen ignored */
+ s = _nss_ldap_setgrent();
+
+ if (s == NSS_STATUS_SUCCESS)
+ *retval = 1;
+ else
+ *retval = 0;
+
+ return nss2netbsderr[s];
+}
+
+static int
+netbsd_endgrent(void *rv, void *cb_data, va_list ap)
+{
+ NSS_STATUS s;
+
+ s = _nss_ldap_endgrent();
+
+ return nss2netbsderr[s];
+}
+
+static int
+netbsd_getgrent(void *rv, void *cb_data, va_list ap)
+{
+ int err;
+ NSS_STATUS s;
+ struct group **retval = va_arg(ap, struct group **);
+
+ memset(&rg, 0, sizeof(rg));
+ s = _nss_ldap_getgrent_r(&rg, grpbuf, sizeof(grpbuf), &err);
+
+ if (s == NSS_STATUS_SUCCESS)
+ *retval = &rg;
+ else
+ *retval = 0;
+
+ return nss2netbsderr[s];
+}
+
+static int
+netbsd_getgrent_r(void *rv, void *cb_data, va_list ap)
+{
+ int err;
+ NSS_STATUS s;
+ int *retval = va_arg(ap, int *);
+ struct group *grp = va_arg(ap, struct group *);
+ char *buf = va_arg(ap, char *);
+ size_t buflen = va_arg(ap, size_t);
+ struct group **result = va_arg(ap, struct group **);
+
+ memset(grp, 0, sizeof(*grp));
+ s = _nss_ldap_getgrent_r(grp, buf, buflen, &err);
+
+ if (s == NSS_STATUS_SUCCESS)
+ *result = grp;
+ else
+ *result = 0;
+
+ if (s == NSS_STATUS_SUCCESS || s == NSS_STATUS_NOTFOUND)
+ *retval = 0;
+ else
+ *retval = 1;
+
+ return nss2netbsderr[s];
+}
+
+static int
+netbsd_getgrnam(void *rv, void *cb_data, va_list ap)
+{
+ int err;
+ NSS_STATUS s;
+ struct group **retval = va_arg(ap, struct group **);
+ const char *name = va_arg(ap, const char *);
+
+ memset(&rg, 0, sizeof(rg));
+ s = _nss_ldap_getgrnam_r(name, &rg, grpbuf, sizeof(grpbuf), &err);
+
+ if (s == NSS_STATUS_SUCCESS)
+ *retval = &rg;
+ else
+ *retval = 0;
+
+ return nss2netbsderr[s];
+}
+
+static int
+netbsd_getgrnam_r(void *rv, void *cb_data, va_list ap)
+{
+ int err;
+ NSS_STATUS s;
+ int *retval = va_arg(ap, int *);
+ const char *name = va_arg(ap, const char *);
+ struct group *grp = va_arg(ap, struct group *);
+ char *buf = va_arg(ap, char *);
+ size_t buflen = va_arg(ap, size_t);
+ struct group **result = va_arg(ap, struct group **);
+
+ memset(grp, 0, sizeof(*grp));
+ s = _nss_ldap_getgrnam_r(name, grp, buf, buflen, &err);
+
+ if (s == NSS_STATUS_SUCCESS)
+ *result = grp;
+ else
+ *result = 0;
+
+ if (s == NSS_STATUS_SUCCESS || s == NSS_STATUS_NOTFOUND)
+ *retval = 0;
+ else
+ *retval = 1;
+
+ return nss2netbsderr[s];
+}
+
+static int
+netbsd_getgrgid(void *rv, void *cb_data, va_list ap)
+{
+ int err;
+ NSS_STATUS s;
+ struct group **retval = va_arg(ap, struct group **);
+ gid_t gid = va_arg(ap, gid_t);
+
+ memset(&rg, 0, sizeof(rg));
+ s = _nss_ldap_getgrgid_r(gid, &rg, grpbuf, sizeof(grpbuf), &err);
+
+ if (s == NSS_STATUS_SUCCESS)
+ *retval = &rg;
+ else
+ *retval = 0;
+
+ return nss2netbsderr[s];
+}
+
+static int
+netbsd_getgrgid_r(void *rv, void *cb_data, va_list ap)
+{
+ int err;
+ NSS_STATUS s;
+ int *retval = va_arg(ap, int *);
+ gid_t gid = va_arg(ap, gid_t);
+ struct group *grp = va_arg(ap, struct group *);
+ char *buf = va_arg(ap, char *);
+ size_t buflen = va_arg(ap, size_t);
+ struct group **result = va_arg(ap, struct group **);
+
+ memset(grp, 0, sizeof(*grp));
+ s = _nss_ldap_getgrgid_r(gid, grp, buf, buflen, &err);
+
+ if (s == NSS_STATUS_SUCCESS)
+ *result = grp;
+ else
+ *result = 0;
+
+ if (s == NSS_STATUS_SUCCESS || s == NSS_STATUS_NOTFOUND)
+ *retval = 0;
+ else
+ *retval = 1;
+
+ return nss2netbsderr[s];
+}
+
+
+ns_mtab *
+nss_module_register(const char *source, unsigned int *mtabsize,
+ nss_module_unregister_fn *unreg)
+{
+ *mtabsize = sizeof(methods)/sizeof(methods[0]);
+ *unreg = NULL;
+ return (methods);
+}
diff --git a/databases/nss_ldap/files/netbsd.h b/databases/nss_ldap/files/netbsd.h
new file mode 100644
index 00000000000..e7b99067d29
--- /dev/null
+++ b/databases/nss_ldap/files/netbsd.h
@@ -0,0 +1,12 @@
+/* $NetBSD: netbsd.h,v 1.1.1.1 2005/08/08 09:47:42 drochner Exp $ */
+
+#undef HAVE_NSSWITCH_H
+#define HAVE_NSS_H
+
+enum nss_status {
+ NSS_STATUS_SUCCESS,
+ NSS_STATUS_NOTFOUND,
+ NSS_STATUS_UNAVAIL,
+ NSS_STATUS_TRYAGAIN,
+ NSS_STATUS_RETURN
+};
diff --git a/databases/nss_ldap/patches/patch-ab b/databases/nss_ldap/patches/patch-ab
new file mode 100644
index 00000000000..32d5d853b31
--- /dev/null
+++ b/databases/nss_ldap/patches/patch-ab
@@ -0,0 +1,12 @@
+$NetBSD: patch-ab,v 1.1.1.1 2005/08/08 09:47:42 drochner Exp $
+
+--- ldap-nss.c.orig 2005-07-26 23:00:16.000000000 +0200
++++ ldap-nss.c
+@@ -33,6 +33,7 @@ static char rcsId[] =
+ #include <pthread.h>
+ #endif
+
++#include <sys/param.h> /* for PATH_MAX */
+ #include <assert.h>
+ #include <stdlib.h>
+ #include <unistd.h>
diff --git a/databases/nss_ldap/patches/patch-af b/databases/nss_ldap/patches/patch-af
new file mode 100644
index 00000000000..2cf5b2226fa
--- /dev/null
+++ b/databases/nss_ldap/patches/patch-af
@@ -0,0 +1,30 @@
+$NetBSD: patch-af,v 1.1.1.1 2005/08/08 09:47:42 drochner Exp $
+
+--- Makefile.in.orig 2005-05-24 02:53:19.000000000 +0200
++++ Makefile.in
+@@ -75,14 +75,14 @@ nss_ldap_so_LD = @nss_ldap_so_LD@
+ noinst_PROGRAMS = nss_ldap.so $(authmod)
+ INST_UID = root
+ @AIX_TRUE@INST_GID = system
+-@AIX_FALSE@INST_GID = root
++@AIX_FALSE@INST_GID = wheel
+
+ EXTRA_DIST = CVSVersionInfo.txt ChangeLog AUTHORS ANNOUNCE NEWS INSTALL README LICENSE.OpenLDAP COPYING ldap.conf nss_ldap.spec nsswitch.ldap
+
+
+ man_MANS = nss_ldap.5
+
+-nss_ldap_so_SOURCES = ldap-nss.c ldap-pwd.c ldap-grp.c ldap-netgrp.c ldap-rpc.c ldap-hosts.c ldap-network.c ldap-proto.c ldap-spwd.c ldap-alias.c ldap-service.c ldap-schema.c ldap-ethers.c ldap-bp.c util.c ltf.c snprintf.c resolve.c dnsconfig.c irs-nss.c pagectrl.c
++nss_ldap_so_SOURCES = ldap-nss.c ldap-pwd.c ldap-grp.c ldap-netgrp.c ldap-rpc.c ldap-hosts.c ldap-network.c ldap-proto.c ldap-spwd.c ldap-alias.c ldap-service.c ldap-schema.c ldap-ethers.c ldap-bp.c util.c ltf.c snprintf.c resolve.c dnsconfig.c irs-nss.c pagectrl.c netbsd.c
+
+
+ nss_ldap_so_LDFLAGS = @nss_ldap_so_LDFLAGS@
+@@ -121,7 +121,7 @@ LIBS = @LIBS@
+ nss_ldap_so_OBJECTS = ldap-nss.o ldap-pwd.o ldap-grp.o ldap-netgrp.o \
+ ldap-rpc.o ldap-hosts.o ldap-network.o ldap-proto.o ldap-spwd.o \
+ ldap-alias.o ldap-service.o ldap-schema.o ldap-ethers.o ldap-bp.o \
+-util.o ltf.o snprintf.o resolve.o dnsconfig.o irs-nss.o pagectrl.o
++util.o ltf.o snprintf.o resolve.o dnsconfig.o irs-nss.o pagectrl.o netbsd.o
+ nss_ldap_so_LDADD = $(LDADD)
+ nss_ldap_so_DEPENDENCIES =
+ NSS_LDAP_OBJECTS = ldap-nss.o ldap-grp.o ldap-pwd.o ldap-netgrp.o \
diff --git a/databases/nss_ldap/patches/patch-ag b/databases/nss_ldap/patches/patch-ag
new file mode 100644
index 00000000000..26997feef14
--- /dev/null
+++ b/databases/nss_ldap/patches/patch-ag
@@ -0,0 +1,12 @@
+$NetBSD: patch-ag,v 1.1.1.1 2005/08/08 09:47:42 drochner Exp $
+
+--- config.h.in.orig 2005-08-04 21:29:33.000000000 +0200
++++ config.h.in
+@@ -302,3 +302,7 @@
+
+ /* Version number of package */
+ #undef VERSION
++
++#ifdef __NetBSD__
++#include "netbsd.h"
++#endif