mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 14:00:30 +00:00
Update.
1998-01-30 22:12 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/Makefile [$(subdir)==nis]: Define CFLAGS-ypclnt.c to -DUSE_BINDINGDIR=1. 1998-01-30 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * nis/ypclnt.c: Try at first to use the binding file from ypbind before using RPC.
This commit is contained in:
parent
4775243aa8
commit
9931ba2412
10
ChangeLog
10
ChangeLog
@ -1,3 +1,13 @@
|
|||||||
|
1998-01-30 22:12 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/Makefile [$(subdir)==nis]: Define
|
||||||
|
CFLAGS-ypclnt.c to -DUSE_BINDINGDIR=1.
|
||||||
|
|
||||||
|
1998-01-30 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
|
||||||
|
|
||||||
|
* nis/ypclnt.c: Try at first to use the binding file from ypbind
|
||||||
|
before using RPC.
|
||||||
|
|
||||||
1998-01-28 Andreas Jaeger <aj@arthur.rhein-neckar.de>
|
1998-01-28 Andreas Jaeger <aj@arthur.rhein-neckar.de>
|
||||||
|
|
||||||
* manual/memory.texi (Heap Consistency Checking): mcheck is
|
* manual/memory.texi (Heap Consistency Checking): mcheck is
|
||||||
|
52
nis/ypclnt.c
52
nis/ypclnt.c
@ -25,8 +25,14 @@
|
|||||||
#include <rpcsvc/yp.h>
|
#include <rpcsvc/yp.h>
|
||||||
#include <rpcsvc/ypclnt.h>
|
#include <rpcsvc/ypclnt.h>
|
||||||
#include <rpcsvc/ypupd.h>
|
#include <rpcsvc/ypupd.h>
|
||||||
|
#include <sys/uio.h>
|
||||||
#include <bits/libc-lock.h>
|
#include <bits/libc-lock.h>
|
||||||
|
|
||||||
|
/* This should only be defined on systems with a BSD compatible ypbind */
|
||||||
|
#ifndef BINDINGDIR
|
||||||
|
# define BINDINGDIR "/var/yp/binding"
|
||||||
|
#endif
|
||||||
|
|
||||||
struct dom_binding
|
struct dom_binding
|
||||||
{
|
{
|
||||||
struct dom_binding *dom_pnext;
|
struct dom_binding *dom_pnext;
|
||||||
@ -91,6 +97,44 @@ __yp_bind (const char *domain, dom_binding **ypdb)
|
|||||||
return YPERR_YPBIND;
|
return YPERR_YPBIND;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if USE_BINDINGDIR
|
||||||
|
if (ysd->dom_vers < 1)
|
||||||
|
{
|
||||||
|
char path[sizeof (BINDINGDIR) - 1 + strlen (domain) + 10];
|
||||||
|
struct iovec vec[2];
|
||||||
|
u_short port;
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
sprintf (path, "%s/%s.%ld", BINDINGDIR, domain, YPBINDVERS);
|
||||||
|
fd = open (path, O_RDONLY);
|
||||||
|
if (fd >= 0)
|
||||||
|
{
|
||||||
|
/* We have a binding file and could save a RPC call */
|
||||||
|
vec[0].iov_base = &port;
|
||||||
|
vec[0].iov_len = sizeof (port);
|
||||||
|
vec[1].iov_base = &ypbr;
|
||||||
|
vec[1].iov_len = sizeof (ypbr);
|
||||||
|
|
||||||
|
if (readv (fd, vec, 2) == vec[0].iov_len + vec[1].iov_len)
|
||||||
|
{
|
||||||
|
memset (&ysd->dom_server_addr, '\0',
|
||||||
|
sizeof ysd->dom_server_addr);
|
||||||
|
ysd->dom_server_addr.sin_family = AF_INET;
|
||||||
|
memcpy (&ysd->dom_server_addr.sin_port,
|
||||||
|
ypbr.ypbind_resp_u.ypbind_bindinfo.ypbind_binding_port,
|
||||||
|
sizeof (ysd->dom_server_addr.sin_port));
|
||||||
|
memcpy (&ysd->dom_server_addr.sin_addr.s_addr,
|
||||||
|
ypbr.ypbind_resp_u.ypbind_bindinfo.ypbind_binding_addr,
|
||||||
|
sizeof (ysd->dom_server_addr.sin_addr.s_addr));
|
||||||
|
ysd->dom_vers = YPVERS;
|
||||||
|
strncpy (ysd->dom_domain, domain, YPMAXDOMAIN);
|
||||||
|
ysd->dom_domain[YPMAXDOMAIN] = '\0';
|
||||||
|
}
|
||||||
|
close (fd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* USE_BINDINGDIR */
|
||||||
|
|
||||||
if (ysd->dom_vers == -1)
|
if (ysd->dom_vers == -1)
|
||||||
{
|
{
|
||||||
if(ysd->dom_client)
|
if(ysd->dom_client)
|
||||||
@ -116,12 +160,12 @@ __yp_bind (const char *domain, dom_binding **ypdb)
|
|||||||
** If not, it's possible someone has registered a bogus
|
** If not, it's possible someone has registered a bogus
|
||||||
** ypbind with the portmapper and is trying to trick us.
|
** ypbind with the portmapper and is trying to trick us.
|
||||||
*/
|
*/
|
||||||
if (ntohs(clnt_saddr.sin_port) >= IPPORT_RESERVED)
|
if (ntohs (clnt_saddr.sin_port) >= IPPORT_RESERVED)
|
||||||
{
|
{
|
||||||
clnt_destroy(client);
|
clnt_destroy (client);
|
||||||
if (is_new)
|
if (is_new)
|
||||||
free(ysd);
|
free (ysd);
|
||||||
return(YPERR_YPBIND);
|
return YPERR_YPBIND;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (clnt_call (client, YPBINDPROC_DOMAIN,
|
if (clnt_call (client, YPBINDPROC_DOMAIN,
|
||||||
|
@ -125,4 +125,8 @@ ifeq ($(subdir),dirent)
|
|||||||
sysdep_routines += getdents64
|
sysdep_routines += getdents64
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(subdir),nis)
|
||||||
|
CFLAGS-ypclnt.c = -DUSE_BINDINGDIR=1
|
||||||
|
endif
|
||||||
|
|
||||||
common-generated += bits/stdio_lim.h bits/stdio_lim.d
|
common-generated += bits/stdio_lim.h bits/stdio_lim.d
|
||||||
|
Loading…
Reference in New Issue
Block a user