From owner-freebsd-ports-bugs@FreeBSD.ORG Sat Oct 26 14:50:03 2013 Return-Path: Delivered-To: freebsd-ports-bugs@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B6D56AC9 for ; Sat, 26 Oct 2013 14:50:03 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A30F2217C for ; Sat, 26 Oct 2013 14:50:03 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.7/8.14.7) with ESMTP id r9QEo2nl068621 for ; Sat, 26 Oct 2013 14:50:02 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.7/8.14.7/Submit) id r9QEo271068620; Sat, 26 Oct 2013 14:50:02 GMT (envelope-from gnats) Date: Sat, 26 Oct 2013 14:50:02 GMT Message-Id: <201310261450.r9QEo271068620@freefall.freebsd.org> To: freebsd-ports-bugs@FreeBSD.org Cc: From: Matthieu Volat Subject: Re: ports/178052: New port submission: dns/mDNSRedponder_nss X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Matthieu Volat List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 26 Oct 2013 14:50:03 -0000 The following reply was made to PR ports/178052; it has been noted by GNATS. From: Matthieu Volat To: bug-followup@FreeBSD.org Cc: Subject: Re: ports/178052: New port submission: dns/mDNSRedponder_nss Date: Sat, 26 Oct 2013 16:46:53 +0200 --Sig_/Ny3W_sr1J_vQxOvpEEyr2H4 Content-Type: multipart/mixed; boundary="MP_/S4ew2aVcJsUy2/gF1uhawUx" --MP_/S4ew2aVcJsUy2/gF1uhawUx Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Here's an update with last mDNSResponder version and stage support. --MP_/S4ew2aVcJsUy2/gF1uhawUx Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename=mDNSResponder_nss.shar.txt # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # mDNSResponder_nss # mDNSResponder_nss/files # mDNSResponder_nss/files/nss_mdns_freebsd.c # mDNSResponder_nss/files/patch-mDNSPosix__nss_mdns.c # mDNSResponder_nss/Makefile # mDNSResponder_nss/distinfo # mDNSResponder_nss/pkg-descr # mDNSResponder_nss/pkg-plist # echo c - mDNSResponder_nss mkdir -p mDNSResponder_nss > /dev/null 2>&1 echo c - mDNSResponder_nss/files mkdir -p mDNSResponder_nss/files > /dev/null 2>&1 echo x - mDNSResponder_nss/files/nss_mdns_freebsd.c sed 's/^X//' >mDNSResponder_nss/files/nss_mdns_freebsd.c << 'fd1c46f3f4a4f4= 38620948d5ef5dcad0' X#include X#include X#include X#include X#include X#include X#include X#include X#include X#include X Xextern int _nss_mdns_gethostbyname2_r(const char *, int, X struct hostent *, char *, size_t, int *, int *); Xextern int _nss_mdns_gethostbyaddr_r(const void *, socklen_t, int, X struct hostent *, char *, size_t, int *, int *); X Xstatic NSS_METHOD_PROTOTYPE(__nss_compat_gethostbyname2_r); Xstatic NSS_METHOD_PROTOTYPE(__nss_compat_gethostbyaddr_r); Xstatic NSS_METHOD_PROTOTYPE(__nss_compat_getaddrinfo); X Xstatic ns_mtab methods[] =3D { X { NSDB_HOSTS, "gethostbyname_r", __nss_compat_gethostbyname2_r, NULL }, X { NSDB_HOSTS, "gethostbyname2_r", __nss_compat_gethostbyname2_r, NULL }, X { NSDB_HOSTS, "gethostbyaddr_r", __nss_compat_gethostbyaddr_r, NULL }, X { NSDB_HOSTS, "getaddrinfo", __nss_compat_getaddrinfo, NULL }, X}; X Xns_mtab * Xnss_module_register(const char *source, unsigned int *mtabsize, X nss_module_unregister_fn *unreg) X{ X *mtabsize =3D sizeof(methods)/sizeof(methods[0]); X *unreg =3D NULL; X return methods; X} X Xstatic int X__nss_compat_gethostbyname2_r(void *retval, void *mdata, va_list ap) X{ X int s; X X const char *name; X int af; X struct hostent *hptr; X char *buffer; X size_t buflen; X int *errnop; X int *h_errnop; X X name =3D va_arg(ap, const char *); X af =3D va_arg(ap, int); X hptr =3D va_arg(ap, struct hostent *); X buffer =3D va_arg(ap, char *); X buflen =3D va_arg(ap, size_t); X errnop =3D va_arg(ap, int *); X h_errnop =3D va_arg(ap, int *); X X s =3D _nss_mdns_gethostbyname2_r( X name, af, hptr, buffer, buflen, errnop, h_errnop); X *(struct hostent **)retval =3D (s =3D=3D NS_SUCCESS) ? hptr : NULL; X X return s; X} X Xstatic int X__nss_compat_gethostbyaddr_r(void *retval, void *mdata, va_list ap) X{ X int s; X=09 X const void *addr; X socklen_t addrlen; X int af; X struct hostent *hptr; X char *buffer; X size_t buflen; X int *errnop; X int *h_errnop; X X addr =3D va_arg(ap, const void *); X addrlen =3D va_arg(ap, socklen_t); X af =3D va_arg(ap, int); X hptr =3D va_arg(ap, struct hostent *); X buffer =3D va_arg(ap, char *); X buflen =3D va_arg(ap, size_t); X errnop =3D va_arg(ap, int *); X h_errnop =3D va_arg(ap, int *); X X s =3D _nss_mdns_gethostbyaddr_r( X addr, addrlen, af, hptr, buffer, buflen, errnop, h_errnop); X *(struct hostent **)retval =3D (s =3D=3D NS_SUCCESS) ? hptr : NULL; X X return s; X}=20 X Xstatic void Xaiforaf(const char *name, int af, struct addrinfo *pai, struct addrinfo **= aip) X{ X int s; X struct hostent host; X char hostbuf[8*1024]; X int err, herr; X char **addrp; X char addrstr[INET6_ADDRSTRLEN]; X struct addrinfo hints, *res0, *res; X X s =3D _nss_mdns_gethostbyname2_r(name, af, &host, hostbuf, sizeof(hostbuf= ), X &err, &herr); X if (s !=3D NS_SUCCESS) X return; X X for (addrp =3D host.h_addr_list; *addrp; addrp++) { X /* XXX this sucks, but get_ai is not public */ X if (!inet_ntop(host.h_addrtype, *addrp, X addrstr, sizeof(addrstr))) X continue; X hints =3D *pai; X hints.ai_flags =3D AI_NUMERICHOST; X hints.ai_family =3D af; X if (getaddrinfo(addrstr, NULL, &hints, &res0)) X continue; X for (res =3D res0; res; res =3D res->ai_next) X res->ai_flags =3D pai->ai_flags; X X (*aip)->ai_next =3D res0; X while ((*aip)->ai_next) X *aip =3D (*aip)->ai_next; X } X} X Xstatic int X__nss_compat_getaddrinfo(void *retval, void *mdata, va_list ap) X{ X struct addrinfo sentinel, *cur; X const char *name; X struct addrinfo *ai; X X name =3D va_arg(ap, char *); X ai =3D va_arg(ap, struct addrinfo *); X X memset(&sentinel, 0, sizeof(sentinel)); X cur =3D &sentinel; X X if ((ai->ai_family =3D=3D AF_UNSPEC) || (ai->ai_family =3D=3D AF_INET6)) X aiforaf(name, AF_INET6, ai, &cur); X if ((ai->ai_family =3D=3D AF_UNSPEC) || (ai->ai_family =3D=3D AF_INET)) X aiforaf(name, AF_INET, ai, &cur); X X if (!sentinel.ai_next) { X h_errno =3D HOST_NOT_FOUND; X return NS_NOTFOUND; X } X *((struct addrinfo **)retval) =3D sentinel.ai_next; X X return NS_SUCCESS; X} X fd1c46f3f4a4f438620948d5ef5dcad0 echo x - mDNSResponder_nss/files/patch-mDNSPosix__nss_mdns.c sed 's/^X//' >mDNSResponder_nss/files/patch-mDNSPosix__nss_mdns.c << '04c37= d337133d3147a842456f108671e' X--- ./mDNSPosix/nss_mdns.c.orig 2013-04-07 17:44:38.000000000 +0200 X+++ ./mDNSPosix/nss_mdns.c 2013-04-07 17:51:54.000000000 +0200 X@@ -379,7 +379,18 @@ X #define ENTNAME hostent X #define DATABASE "hosts" X=20 X-#include X+#if defined __FreeBSD__ X+# include X+enum nss_status { X+ NSS_STATUS_SUCCESS =3D NS_SUCCESS, X+ NSS_STATUS_NOTFOUND =3D NS_NOTFOUND, X+ NSS_STATUS_UNAVAIL =3D NS_UNAVAIL, X+ NSS_STATUS_TRYAGAIN =3D NS_TRYAGAIN, X+ NSS_STATUS_RETURN =3D NS_RETURN X+}; X+#elif defined __Linux__ X+# include X+#endif X // For nss_status X #include X // For hostent 04c37d337133d3147a842456f108671e echo x - mDNSResponder_nss/Makefile sed 's/^X//' >mDNSResponder_nss/Makefile << '7e3b9888bc2028cc8d4b6de5e54399= 08' X# $FreeBSD$ X XPORTNAME=3D mDNSResponder_nss XPORTVERSION=3D 333.10 XCATEGORIES=3D dns net XMASTER_SITES=3D http://opensource.apple.com/tarballs/mDNSResponder/ XDISTNAME=3D ${PORTNAME:S/_nss//}-${PORTVERSION} X XMAINTAINER=3D mazhe@alkumuna.eu XCOMMENT=3D Apple\'s mDNS responder - FreeBSD nsswitch module X XLICENSE=3D AL2 BSD XLICENSE_COMB=3D dual X XLIB_DEPENDS=3D dns_sd:${PORTSDIR}/net/mDNSResponder X XCONFLICTS_INSTALL=3D dns/nss_mdns X XWRKSRC=3D ${WRKDIR}/${PORTNAME:S/_nss//}-${PORTVERSION} X XMAN5=3D nss_mdns.conf.5 XMANCOMPRESSED=3D no X Xpost-extract: X @${CP} ${FILESDIR}/nss_mdns_freebsd.c ${WRKSRC}/mDNSPosix X Xdo-build: X (cd ${WRKSRC}/mDNSPosix && ${CC} ${CFLAGS} -c -std=3Dc99 -Wall -fPIC \ X -I. -I${PREFIX}/include -DPREFIX=3D\"${PREFIX}\" \ X nss_mdns.c nss_mdns_freebsd.c) X (cd ${WRKSRC}/mDNSPosix && ${LD} -shared nss_mdns.o nss_mdns_freebsd.o \ X -o nss_mdns.so.1 -L${PREFIX}/lib -R${PREFIX}/lib -ldns_sd) X Xdo-install: X ${INSTALL_LIB} ${WRKSRC}/mDNSPosix/nss_mdns.so.1 ${PREFIX}/lib X ${LN} -sf ${PREFIX}/lib/nss_mdns.so.1 ${PREFIX}/lib/nss_mdns.so X ${MKDIR} ${EXAMPLESDIR} X ${INSTALL_DATA} ${WRKSRC}/mDNSPosix/nss_mdns.conf ${EXAMPLESDIR} X ${INSTALL_MAN} ${WRKSRC}/mDNSPosix/nss_mdns.conf.5 ${MANPREFIX}/man/man5 X Xpost-install: X ${STRIP_CMD} ${PREFIX}/lib/nss_mdns.so.1 X X.include 7e3b9888bc2028cc8d4b6de5e5439908 echo x - mDNSResponder_nss/distinfo sed 's/^X//' >mDNSResponder_nss/distinfo << 'e71e320fe90ee26782adad7d882afa= ce' XSHA256 (mDNSResponder-333.10.tar.gz) =3D 3624e39022c9210b819e94423c02f9ae1= 2550cc21511ca979ab87e0c2212967b XSIZE (mDNSResponder-333.10.tar.gz) =3D 1937483 e71e320fe90ee26782adad7d882aface echo x - mDNSResponder_nss/pkg-descr sed 's/^X//' >mDNSResponder_nss/pkg-descr << '07f8ea0275e014c1f4a148c27143e= 2e7' XThis is a nsswitch plugin from Apple's mDNSResponder code, adapted for Fre= eBSD's Xnsswitch and libc. 07f8ea0275e014c1f4a148c27143e2e7 echo x - mDNSResponder_nss/pkg-plist sed 's/^X//' >mDNSResponder_nss/pkg-plist << '58c811c6c92a205f1ff5b1ae9e5fe= f5e' Xlib/nss_mdns.so Xlib/nss_mdns.so.1 X%%EXAMPLESDIR%%/nss_mdns.conf X@dirrm %%EXAMPLESDIR%% 58c811c6c92a205f1ff5b1ae9e5fef5e exit --MP_/S4ew2aVcJsUy2/gF1uhawUx-- --Sig_/Ny3W_sr1J_vQxOvpEEyr2H4 Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (FreeBSD) iEYEARECAAYFAlJr1eUACgkQ+ENDeYKZi346vACeKgH5Sw0NNZaBvRH4aSWJw9DM 60YAnj/z+xrYsaPEqLZXYRlmpPBoMMnM =diDU -----END PGP SIGNATURE----- --Sig_/Ny3W_sr1J_vQxOvpEEyr2H4--