ports/178052: New port submission: dns/mDNSRedponder_nss

Matthieu Volat mazhe at alkumuna.eu
Sat Oct 26 14:50:03 UTC 2013


The following reply was made to PR ports/178052; it has been noted by GNATS.

From: Matthieu Volat <mazhe at alkumuna.eu>
To: bug-followup at 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 <sys/param.h>
 X#include <sys/socket.h>
 X#include <arpa/inet.h>
 X#include <netinet/in.h>
 X#include <netdb.h>
 X#include <nsswitch.h>
 X#include <stdarg.h>
 X#include <stdlib.h>
 X#include <string.h>
 X#include <syslog.h>
 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 <nss.h>
 X+#if defined __FreeBSD__
 X+# include <nsswitch.h>
 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 <nss.h>
 X+#endif
 X 	// For nss_status
 X #include <netdb.h>
 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 at 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 <bsd.port.mk>
 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 at 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--


More information about the freebsd-ports-bugs mailing list