ports/178052: New port submission: dns/mDNSRedponder_nss
Matthieu Volat
mazhe at alkumuna.eu
Thu Jan 23 10:10:01 UTC 2014
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, mazhe at alkumuna.eu
Cc:
Subject: Re: ports/178052: New port submission: dns/mDNSRedponder_nss
Date: Thu, 23 Jan 2014 11:08:50 +0100
--Apple-Mail=_50CC5A70-FFB3-42DB-A552-F03EAA581E16
Content-Type: multipart/mixed;
boundary="Apple-Mail=_7B59EC6F-AE17-4B5C-88DF-37B8D14FC7D4"
--Apple-Mail=_7B59EC6F-AE17-4B5C-88DF-37B8D14FC7D4
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
charset=us-ascii
And another update that follows integration of version 544 in ports, =
which makes name queries work again!
--Apple-Mail=_7B59EC6F-AE17-4B5C-88DF-37B8D14FC7D4
Content-Disposition: attachment;
filename=mDNSResponder_nss.sh.txt
Content-Type: text/plain;
x-unix-mode=0644;
name="mDNSResponder_nss.sh.txt"
Content-Transfer-Encoding: quoted-printable
# 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 << =
'fd1c46f3f4a4f438620948d5ef5dcad0'
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 << =
'04c37d337133d3147a842456f108671e'
X--- ./mDNSPosix/nss_mdns.c.orig 2012-04-15 08:07:19.000000000 =
+0200
X+++ ./mDNSPosix/nss_mdns.c 2013-11-05 11:00:14.000000000 +0100
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
X@@ -1684,7 +1695,7 @@
X //----------
X // Types and Constants
X=20
X-const char * k_conf_file =3D "/etc/nss_mdns.conf";
X+const char * k_conf_file =3D PREFIX"/etc/nss_mdns.conf";
X #define CONF_LINE_SIZE 1024
X=20
X const char k_comment_char =3D '#';
04c37d337133d3147a842456f108671e
echo x - mDNSResponder_nss/Makefile
sed 's/^X//' >mDNSResponder_nss/Makefile << =
'7e3b9888bc2028cc8d4b6de5e5439908'
X# $FreeBSD$
X
XPORTNAME=3D mDNSResponder_nss
XPORTVERSION=3D 544
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 mDNS responder - FreeBSD nsswitch module
X
XLICENSE=3D APACHE20 BSD3CLAUSE
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
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 =
${STAGEDIR}${PREFIX}/lib
X ${LN} -sf ${PREFIX}/lib/nss_mdns.so.1 =
${STAGEDIR}${PREFIX}/lib/nss_mdns.so
X ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
X ${INSTALL_DATA} ${WRKSRC}/mDNSPosix/nss_mdns.conf =
${STAGEDIR}${EXAMPLESDIR}
X ${INSTALL_MAN} ${WRKSRC}/mDNSPosix/nss_mdns.conf.5 =
${STAGEDIR}${MANPREFIX}/man/man5
X
Xpost-install:
X ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/nss_mdns.so.1
X
X.include <bsd.port.mk>
7e3b9888bc2028cc8d4b6de5e5439908
echo x - mDNSResponder_nss/distinfo
sed 's/^X//' >mDNSResponder_nss/distinfo << =
'e71e320fe90ee26782adad7d882aface'
XSHA256 (mDNSResponder-544.tar.gz) =3D =
c6ad1d53c28d28c0e3689bdf5efd9ce6f5c4c3692e8ad76e5eeb4d0c248929ac
XSIZE (mDNSResponder-544.tar.gz) =3D 2153326
e71e320fe90ee26782adad7d882aface
echo x - mDNSResponder_nss/pkg-descr
sed 's/^X//' >mDNSResponder_nss/pkg-descr << =
'07f8ea0275e014c1f4a148c27143e2e7'
XThis is a nsswitch plugin from Apple's mDNSResponder code, adapted for =
FreeBSD's
Xnsswitch and libc.
07f8ea0275e014c1f4a148c27143e2e7
echo x - mDNSResponder_nss/pkg-plist
sed 's/^X//' >mDNSResponder_nss/pkg-plist << =
'58c811c6c92a205f1ff5b1ae9e5fef5e'
Xlib/nss_mdns.so
Xlib/nss_mdns.so.1
Xman/man5/nss_mdns.conf.5.gz
X%%EXAMPLESDIR%%/nss_mdns.conf
X at dirrm %%EXAMPLESDIR%%
58c811c6c92a205f1ff5b1ae9e5fef5e
exit
--Apple-Mail=_7B59EC6F-AE17-4B5C-88DF-37B8D14FC7D4
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
charset=us-ascii
--Apple-Mail=_7B59EC6F-AE17-4B5C-88DF-37B8D14FC7D4--
--Apple-Mail=_50CC5A70-FFB3-42DB-A552-F03EAA581E16
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename=signature.asc
Content-Type: application/pgp-signature;
name=signature.asc
Content-Description: Message signed with OpenPGP using GPGMail
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - http://gpgtools.org
iEYEARECAAYFAlLg6joACgkQ+ENDeYKZi37RdwCgxDyTLjteDPWmaBRlIC9mhHxN
/9AAoIEhPuip7YUjNlOODmh2J9XU8zGA
=ZSQY
-----END PGP SIGNATURE-----
--Apple-Mail=_50CC5A70-FFB3-42DB-A552-F03EAA581E16--
More information about the freebsd-ports-bugs
mailing list