freebsd-ports/dns/nss_mdns/files/patch-src__bsdnss.c
Pav Lucistnik a9d2704f22 - Build and install the nss_mdns_minimal module. This module only performs
lookups for the .local domain and self assigned IP addresses, rejecting
  others. This can be used to speed up the resolution of non mdns registered
  host names.

PR:		ports/128107
Submitted by:	Andrew <andrew@ugh.net.au>
Approved by:	Ashish Shukla <wahjava@gmail.com> (maintainer)
2008-11-14 10:23:34 +00:00

73 lines
2.8 KiB
C

--- src/bsdnss.c.orig 2007-02-08 16:42:23.000000000 +0000
+++ src/bsdnss.c 2008-10-07 23:38:41.000000000 +0100
@@ -45,6 +45,7 @@
#include <netinet/in.h>
#include <netdb.h>
+#include "nss_gethostname_select.h"
#include "config.h"
#ifdef MDNS_MINIMAL
@@ -80,37 +81,6 @@
ns_mtab *nss_module_register(const char *source, unsigned int *mtabsize,
nss_module_unregister_fn *unreg);
-extern enum nss_status _nss_mdns_gethostbyname_r (const char *name, struct hostent * result,
- char *buffer, size_t buflen, int *errnop,
- int *h_errnop);
-
-extern enum nss_status _nss_mdns_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_mdns_gethostbyaddr_r (struct in_addr * addr, int len, int type,
- struct hostent * result, char *buffer,
- size_t buflen, int *errnop, int *h_errnop);
-extern enum nss_status _nss_mdns4_gethostbyname_r (const char *name, struct hostent * result,
- char *buffer, size_t buflen, int *errnop,
- int *h_errnop);
-
-extern enum nss_status _nss_mdns4_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_mdns4_gethostbyaddr_r (struct in_addr * addr, int len, int type,
- struct hostent * result, char *buffer,
- size_t buflen, int *errnop, int *h_errnop);
-extern enum nss_status _nss_mdns6_gethostbyname_r (const char *name, struct hostent * result,
- char *buffer, size_t buflen, int *errnop,
- int *h_errnop);
-
-extern enum nss_status _nss_mdns6_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_mdns6_gethostbyaddr_r (struct in_addr * addr, int len, int type,
- struct hostent * result, char *buffer,
- size_t buflen, int *errnop, int *h_errnop);
-
typedef enum nss_status (*_bsd_nsstub_fn_t)(const char *, struct hostent *, char *, size_t, int *, int *);
/* XXX: FreeBSD 5.x is not supported. */
@@ -219,22 +189,8 @@
* 2. Map hostent to addrinfo.
* 3. Hand-off buffer to libc.
*/
- switch (pai->ai_family) {
- case AF_UNSPEC:
- status = _nss_mdns_gethostbyname_r(name, hp, buffer, mbuflen,
- &_errno, &_h_errno);
- break;
- case AF_INET:
- status = _nss_mdns4_gethostbyname_r(name, hp, buffer, mbuflen,
- &_errno, &_h_errno);
- break;
- case AF_INET6:
- status = _nss_mdns6_gethostbyname_r(name, hp, buffer, mbuflen,
- &_errno, &_h_errno);
- break;
- default:
- break;
- }
+ status = _nss_mdns_gethostbyname2_r(name, pai->ai_family, hp, buffer,
+ mbuflen, &_errno, &_h_errno);
status = __nss_compat_result(status, _errno);
if (status == NS_SUCCESS) {