From owner-freebsd-ports@FreeBSD.ORG Wed May 3 06:45:05 2006 Return-Path: X-Original-To: ports@freebsd.org Delivered-To: freebsd-ports@FreeBSD.ORG Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9F42816A402 for ; Wed, 3 May 2006 06:45:05 +0000 (UTC) (envelope-from kazakov@gmail.com) Received: from py-out-1112.google.com (pproxy.gmail.com [64.233.166.180]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8F8FA43D4C for ; Wed, 3 May 2006 06:45:04 +0000 (GMT) (envelope-from kazakov@gmail.com) Received: by py-out-1112.google.com with SMTP id e30so124583pya for ; Tue, 02 May 2006 23:45:03 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:subject:from:to:content-type:date:message-id:mime-version:x-mailer; b=QJZekpHKjzN5Qi7cxNG7+PFrt7plwIYwmiTB/JOhrsA6y23SDBYTJtsOWy28gMuKIWpA82CfMlsyvL8w8xjhEwDOdXfh61CaPFRurvj9LsEUGCJBagkkxFOEH5HcDs2JBfGN/iGBSbw246R6v3qp5INPVaT4WaPJG7BI5b21/DU= Received: by 10.35.21.1 with SMTP id y1mr280463pyi; Tue, 02 May 2006 23:45:03 -0700 (PDT) Received: from tyoma.kek.jp ( [130.87.161.100]) by mx.gmail.com with ESMTP id r66sm573895pye.2006.05.02.23.45.02; Tue, 02 May 2006 23:45:03 -0700 (PDT) From: Artem Kazakov To: ports@FreeBSD.org Content-Type: multipart/mixed; boundary="=-H3Cjz2KfxkFRsrGMjH24" Date: Wed, 03 May 2006 15:46:00 +0900 Message-Id: <1146638760.7116.20.camel@tyoma.linac.kek.jp> Mime-Version: 1.0 X-Mailer: Evolution 2.4.2.1 FreeBSD GNOME Team Port Cc: Subject: net/nss_ldap port update. X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 May 2006 06:45:05 -0000 --=-H3Cjz2KfxkFRsrGMjH24 Content-Type: text/plain Content-Transfer-Encoding: 7bit Hello all! I extended net/nss_ldap port functionality a little. Now it is possible to use ldap as source for hosts database. Only gethosbyname, gethostbyname2, gethostbyaddr are implemented. But it seems sufficient for most cases I think. Patch file is attached. Cheers, Artem Kazakov. PS. There are some "strange" lines in the original nss_ldap/files/bsdnss.c for example: { NSDB_PASSWD, "endpwent", __nss_compat_setpwent, _nss_ldap_setpwent }, { NSDB_PASSWD, "setpwent", __nss_compat_endpwent, _nss_ldap_endpwent }, Shouldn't it be like that? : { NSDB_PASSWD, "setpwent", __nss_compat_setpwent, _nss_ldap_setpwent }, { NSDB_PASSWD, "endpwent", __nss_compat_endpwent, _nss_ldap_endpwent }, I have not noticed any difference in behavior when I change this, so I did not include that fix to my patch. But can anyone explain if it is a mistake or not? setgrent/endgrent are also mixed as in example. --=-H3Cjz2KfxkFRsrGMjH24 Content-Disposition: attachment; filename=nss_ldap_port.patch Content-Type: text/x-patch; name=nss_ldap_port.patch; charset=UTF-8 Content-Transfer-Encoding: 7bit diff -rcN /usr/ports/net/nss_ldap/files/bsdnss.c files/bsdnss.c *** /usr/ports/net/nss_ldap/files/bsdnss.c Fri Apr 25 00:07:20 2003 --- files/bsdnss.c Wed May 3 06:29:46 2006 *************** *** 1,7 **** --- 1,10 ---- + #include #include + #include #include #include #include + #include extern enum nss_status _nss_ldap_getgrent_r(struct group *, char *, size_t, int *); *************** *** 21,26 **** --- 24,40 ---- extern enum nss_status _nss_ldap_setpwent(void); extern enum nss_status _nss_ldap_endpwent(void); + extern enum nss_status _nss_ldap_gethostbyname_r (const char *name, struct hostent * result, + char *buffer, size_t buflen, int *errnop, + int *h_errnop); + + extern enum nss_status _nss_ldap_gethostbyname2_r (const char *name, int af, struct hostent * result, + char *buffer, size_t buflen, int *errnop, + int *h_errnop); + extern enum nss_status _nss_ldap_gethostbyaddr_r (struct in_addr * addr, int len, int type, + struct hostent * result, char *buffer, + size_t buflen, int *errnop, int *h_errnop); + NSS_METHOD_PROTOTYPE(__nss_compat_getgrnam_r); NSS_METHOD_PROTOTYPE(__nss_compat_getgrgid_r); NSS_METHOD_PROTOTYPE(__nss_compat_getgrent_r); *************** *** 33,38 **** --- 47,56 ---- NSS_METHOD_PROTOTYPE(__nss_compat_setpwent); NSS_METHOD_PROTOTYPE(__nss_compat_endpwent); + NSS_METHOD_PROTOTYPE(__nss_compat_gethostbyname); + NSS_METHOD_PROTOTYPE(__nss_compat_gethostbyname2); + NSS_METHOD_PROTOTYPE(__nss_compat_gethostbyaddr); + static ns_mtab methods[] = { { NSDB_GROUP, "getgrnam_r", __nss_compat_getgrnam_r, _nss_ldap_getgrnam_r }, { NSDB_GROUP, "getgrgid_r", __nss_compat_getgrgid_r, _nss_ldap_getgrgid_r }, *************** *** 46,51 **** --- 64,73 ---- { NSDB_PASSWD, "endpwent", __nss_compat_setpwent, _nss_ldap_setpwent }, { NSDB_PASSWD, "setpwent", __nss_compat_endpwent, _nss_ldap_endpwent }, + { NSDB_HOSTS, "gethostbyname", __nss_compat_gethostbyname, _nss_ldap_gethostbyname_r }, + { NSDB_HOSTS, "gethostbyaddr", __nss_compat_gethostbyaddr, _nss_ldap_gethostbyaddr_r }, + { NSDB_HOSTS, "gethostbyname2", __nss_compat_gethostbyname2, _nss_ldap_gethostbyname2_r }, + { NSDB_GROUP_COMPAT, "getgrnam_r", __nss_compat_getgrnam_r, _nss_ldap_getgrnam_r }, { NSDB_GROUP_COMPAT, "getgrgid_r", __nss_compat_getgrgid_r, _nss_ldap_getgrgid_r }, { NSDB_GROUP_COMPAT, "getgrent_r", __nss_compat_getgrent_r, _nss_ldap_getgrent_r }, *************** *** 68,71 **** --- 90,158 ---- *mtabsize = sizeof(methods)/sizeof(methods[0]); *unreg = NULL; return (methods); + } + + int __nss_compat_gethostbyname(void *retval, void *mdata, va_list ap) + { + enum nss_status (*fn)(const char *, struct hostent *, char *, size_t, int *, int *); + const char *name; + struct hostent *result; + char buffer[1024]; + size_t buflen = 1024; + int errnop; + int h_errnop; + int af; + enum nss_status status; + fn = mdata; + name = va_arg(ap, const char*); + af = va_arg(ap,int); + result = va_arg(ap,struct hostent *); + status = fn(name, result, buffer, buflen, &errnop, &h_errnop); + status = __nss_compat_result(status,errnop); + h_errno = h_errnop; + return (status); + } + + int __nss_compat_gethostbyname2(void *retval, void *mdata, va_list ap) + { + enum nss_status (*fn)(const char *, struct hostent *, char *, size_t, int *, int *); + const char *name; + struct hostent *result; + char buffer[1024]; + size_t buflen = 1024; + int errnop; + int h_errnop; + int af; + enum nss_status status; + fn = mdata; + name = va_arg(ap, const char*); + af = va_arg(ap,int); + result = va_arg(ap,struct hostent *); + status = fn(name, result, buffer, buflen, &errnop, &h_errnop); + status = __nss_compat_result(status,errnop); + h_errno = h_errnop; + return (status); + } + + int __nss_compat_gethostbyaddr(void *retval, void *mdata, va_list ap) + { + struct in_addr *addr; + int len; + int type; + struct hostent *result; + char buffer[1024]; + size_t buflen = 1024; + int errnop; + int h_errnop; + enum nss_status (*fn)(struct in_addr *, int, int, struct hostent *, char *, size_t, int *, int *); + enum nss_status status; + fn = mdata; + addr = va_arg(ap, struct in_addr*); + len = va_arg(ap,int); + type = va_arg(ap,int); + result = va_arg(ap, struct hostent*); + status = fn(addr, len, type, result, buffer, buflen, &errnop, &h_errnop); + status = __nss_compat_result(status,errnop); + h_errno = h_errnop; + return (status); } diff -rcN /usr/ports/net/nss_ldap/files/patch-Makefile.in files/patch-Makefile.in *** /usr/ports/net/nss_ldap/files/patch-Makefile.in Fri Mar 24 22:52:30 2006 --- files/patch-Makefile.in Tue May 2 05:07:18 2006 *************** *** 12,23 **** - +nss_ldap_so_SOURCES = ldap-nss.c ldap-pwd.c ldap-grp.c \ + ldap-schema.c utils.c ltf.c snprintf.c resolve.c \ ! + dnsconfig.c irs-nss.c pagectrl.c bsdnss.c NSS_LDAP_SOURCES = ldap-nss.c ldap-grp.c ldap-pwd.c ldap-netgrp.c ldap-schema.c \ util.c ltf.c snprintf.c resolve.c dnsconfig.c \ - irs-nss.c pagectrl.c aix_authmeth.c ! + irs-nss.c pagectrl.c aix_authmeth.c bsdnss.c DEFS = @DEFS@ --- 12,23 ---- - +nss_ldap_so_SOURCES = ldap-nss.c ldap-pwd.c ldap-grp.c \ + ldap-schema.c utils.c ltf.c snprintf.c resolve.c \ ! + dnsconfig.c irs-nss.c pagectrl.c bsdnss.c ldap-hosts.c NSS_LDAP_SOURCES = ldap-nss.c ldap-grp.c ldap-pwd.c ldap-netgrp.c ldap-schema.c \ util.c ltf.c snprintf.c resolve.c dnsconfig.c \ - irs-nss.c pagectrl.c aix_authmeth.c ! + irs-nss.c pagectrl.c aix_authmeth.c bsdnss.c ldap-hosts.c DEFS = @DEFS@ *************** *** 41,47 **** + util.$(OBJEXT) ltf.$(OBJEXT) \ snprintf.$(OBJEXT) resolve.$(OBJEXT) dnsconfig.$(OBJEXT) \ - irs-nss.$(OBJEXT) pagectrl.$(OBJEXT) ldap-sldap.$(OBJEXT) ! + irs-nss.$(OBJEXT) pagectrl.$(OBJEXT) bsdnss.$(OBJEXT) nss_ldap_so_OBJECTS = $(am_nss_ldap_so_OBJECTS) nss_ldap_so_LDADD = $(LDADD) nss_ldap_so_DEPENDENCIES = --- 41,47 ---- + util.$(OBJEXT) ltf.$(OBJEXT) \ snprintf.$(OBJEXT) resolve.$(OBJEXT) dnsconfig.$(OBJEXT) \ - irs-nss.$(OBJEXT) pagectrl.$(OBJEXT) ldap-sldap.$(OBJEXT) ! + irs-nss.$(OBJEXT) pagectrl.$(OBJEXT) bsdnss.$(OBJEXT) ldap-hosts.$(OBJEXT) nss_ldap_so_OBJECTS = $(am_nss_ldap_so_OBJECTS) nss_ldap_so_LDADD = $(LDADD) nss_ldap_so_DEPENDENCIES = *************** *** 68,74 **** @AMDEP_TRUE@ $(DEPDIR)/pagectrl.Po $(DEPDIR)/resolve.Po \ -@AMDEP_TRUE@ $(DEPDIR)/snprintf.Po $(DEPDIR)/util.Po +@AMDEP_TRUE@ $(DEPDIR)/snprintf.Po $(DEPDIR)/util.Po \ ! +@AMDEP_TRUE@ $(DEPDIR)/bsdnss.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) --- 68,74 ---- @AMDEP_TRUE@ $(DEPDIR)/pagectrl.Po $(DEPDIR)/resolve.Po \ -@AMDEP_TRUE@ $(DEPDIR)/snprintf.Po $(DEPDIR)/util.Po +@AMDEP_TRUE@ $(DEPDIR)/snprintf.Po $(DEPDIR)/util.Po \ ! +@AMDEP_TRUE@ $(DEPDIR)/bsdnss.Po $(DEPDIR)/ldap-hosts.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) *************** *** 108,114 **** config.h: stamp-h @if test ! -f $@; then \ rm -f stamp-h; \ ! @@ -248,22 +240,11 @@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/aix_authmeth.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/dnsconfig.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/irs-nss.Po@am__quote@ --- 108,114 ---- config.h: stamp-h @if test ! -f $@; then \ rm -f stamp-h; \ ! @@ -248,21 +240,11 @@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/aix_authmeth.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/dnsconfig.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/irs-nss.Po@am__quote@ *************** *** 117,123 **** -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ldap-bp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ldap-ethers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ldap-grp.Po@am__quote@ ! -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ldap-hosts.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ldap-netgrp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ldap-network.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ldap-nss.Po@am__quote@ --- 117,123 ---- -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ldap-bp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ldap-ethers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ldap-grp.Po@am__quote@ ! @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ldap-hosts.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ldap-netgrp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ldap-network.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ldap-nss.Po@am__quote@ --=-H3Cjz2KfxkFRsrGMjH24--