2019-01-01 00:11:28 +00:00
|
|
|
/* Copyright (C) 1997-2019 Free Software Foundation, Inc.
|
1997-07-28 22:35:20 +00:00
|
|
|
This file is part of the GNU C Library.
|
|
|
|
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
|
|
|
|
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
2001-07-06 04:58:11 +00:00
|
|
|
modify it under the terms of the GNU Lesser General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2.1 of the License, or (at your option) any later version.
|
1997-07-28 22:35:20 +00:00
|
|
|
|
|
|
|
The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
2001-07-06 04:58:11 +00:00
|
|
|
Lesser General Public License for more details.
|
1997-07-28 22:35:20 +00:00
|
|
|
|
2001-07-06 04:58:11 +00:00
|
|
|
You should have received a copy of the GNU Lesser General Public
|
2012-02-09 23:18:22 +00:00
|
|
|
License along with the GNU C Library; if not, see
|
|
|
|
<http://www.gnu.org/licenses/>. */
|
1997-07-28 22:35:20 +00:00
|
|
|
|
|
|
|
#include <string.h>
|
2001-01-31 07:42:03 +00:00
|
|
|
#include <time.h>
|
1997-07-28 22:35:20 +00:00
|
|
|
#include <unistd.h>
|
|
|
|
#include <sys/ioctl.h>
|
1998-04-11 11:51:23 +00:00
|
|
|
#include <sys/socket.h>
|
1997-07-28 22:35:20 +00:00
|
|
|
#include <rpc/pmap_prot.h>
|
|
|
|
#include <rpc/pmap_clnt.h>
|
|
|
|
#include <rpcsvc/nis.h>
|
|
|
|
|
|
|
|
#include "nis_intern.h"
|
|
|
|
|
|
|
|
/* Private data kept per client handle, from sunrpc/clnt_udp.c */
|
|
|
|
struct cu_data
|
|
|
|
{
|
|
|
|
int cu_sock;
|
|
|
|
bool_t cu_closeit;
|
|
|
|
struct sockaddr_in cu_raddr;
|
|
|
|
int cu_rlen;
|
|
|
|
struct timeval cu_wait;
|
|
|
|
struct timeval cu_total;
|
|
|
|
struct rpc_err cu_error;
|
|
|
|
XDR cu_outxdrs;
|
|
|
|
u_int cu_xdrpos;
|
|
|
|
u_int cu_sendsz;
|
|
|
|
char *cu_outbuf;
|
|
|
|
u_int cu_recvsz;
|
|
|
|
char cu_inbuf[1];
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Find the mapped port for program,version.
|
|
|
|
* Calls the pmap service remotely to do the lookup.
|
|
|
|
* Returns 0 if no map exists.
|
|
|
|
*/
|
1998-06-01 13:10:54 +00:00
|
|
|
u_short
|
|
|
|
__pmap_getnisport (struct sockaddr_in *address, u_long program,
|
|
|
|
u_long version, u_int protocol)
|
1997-07-28 22:35:20 +00:00
|
|
|
{
|
2010-09-01 11:12:55 +00:00
|
|
|
return __libc_rpc_getport (address, program, version, protocol, 1, 1);
|
1997-07-28 22:35:20 +00:00
|
|
|
}
|
|
|
|
|
Update.
1997-09-25 00:23 Ulrich Drepper <drepper@cygnus.com>
* elf/dl-profile.c: Correct implementation.
* io/ftwtest-sh: Don't depend on TMPDIR == /tmp.
* locale/setlocale.c: Rewrite a bit for more clarity.
* math/Makefile (libm-calls): Add w_exp2.
* math/math_private.h: Add prototypes for __ieee754_exp2{,f,l}.
* sysdeps/libm-i387/s_exp2.S: Change name to __ieee754_exp2.
* sysdeps/libm-i387/s_exp2f.S: Likewise.
* sysdeps/libm-i387/s_exp2l.S: Likewise.
* sysdeps/libm-ieee754/k_standard.c: Add error cases for exp2.
* string/bits/string2.h (__strcpy_small): Optimize.
(__stpcpy_small): Likewise.
(strncpy): Use variable for dest argument since it's used more than
once.
(strncat): Likewise.
(strcmp): Add optimization for this function.
* sysdeps/i386/i486/string.h (strlen): Correctly use __builtin_strlen.
(__strcpy_small): Optimize.
(__stpcpy_small): Likewise.
(__stpcpy_c): Correctly use __mempcpy_* macros.
(__mempcpy_by2, __mempcpy_by4, __mempcpy_byn): Return pointer to
byte following last copied.
(strncat): Use variable for dest argument since it's used more than
once.
(strcmp): Add optimization for this function.
* sysdeps/i386/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): Use
.text and .previous to select correct section.
1997-09-23 19:56 Philip Blundell <Philip.Blundell@pobox.com>
* configure.in: Add `--disable-versioning' option to suppress the
use of symbol versions even if binutils claims to support it.
1997-09-24 20:10 Philip Blundell <Philip.Blundell@pobox.com>
* csu/Makefile (before-compile): Don't try to build abi-tags.h if
not using ELF.
1997-09-21 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/sofini.c [HAVE_DWARF2_UNWIND_INFO]: Supply termination for
the frame unwind info section.
* elf/soinit.c [HAVE_DWARF2_UNWIND_INFO]: Register and unregister
the frame unwind info.
* config.h.in (HAVE_DWARF2_UNWIND_INFO): Add #undef.
* configure.in: Check whether gcc supports DWARF2 unwind info.
* libc.map: Export frame handling tables.
1997-09-10 06:56 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/unix/sysv/linux/powerpc/bits/kernel_termios.h:
Use the size of the kernel's termios structure for ioctls.
* sysdeps/powerpc/dl-machine.h: Prepare for library profiling.
* sysdeps/powerpc/bits/mathinline.h: Add slightly slower versions
of the C9X FP comparison macros. Delete 'fabs' and 'sqrt' inline
routines, because gcc has them as internals.
* sysdeps/powerpc/Makefile (pic-ccflags): Define this instead of
CFLAGS-.os.
* sysdeps/powerpc/bzero.S: New file.
* sysdeps/powerpc/strcat.c: New file.
* sysdeps/powerpc/strcpy.S: New file.
* sysdeps/powerpc/stpcpy.S: New file.
* math/Makefile: Add atest_exp2, test-reduce.
* math/atest_exp2.c: New file.
* math/test-reduce.c: New file.
* sysdeps/libm-ieee754/Dist: New file.
* sysdeps/libm-ieee754/s_exp2.c: New file.
* sysdeps/libm-ieee754/s_exp2f.c: New file.
* sysdeps/libm-ieee754/t_exp2.h: New file.
* sysdeps/libm-ieee754/t_exp2f.h: New file.
* math/libm-test.c (exp2_test): Add some more tests.
* Rules: Use empty.os instead of empty.o, since it gets linked into
libc.so...
* configure.in: Add --disable-static to disable building .a files.
* config.make.in: Substitute the new variable.
* Makeconfig: Don't build .o files if not building .a files.
* elf/dl-runtime.c (fixup): Factor out call to elf_machine_relplt.
(profile_fixup): Likewise.
1997-09-23 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* posix/globtest.c (main): Change to directory passed as first
argument.
* posix/globtest.sh: Don't cd before running the program, instead
pass testdir as argument, so that $common_objpfx remains valid.
1997-09-23 18:01 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis/nis_call.c (__do_niscall2): Fix multiple Server support.
* nis/nis_findserver.c: Save latest working sockaddr_in.
1997-09-17 22:07 Zack Weinberg <zack@rabi.phys.columbia.edu>
* configure.in: Automatically determine whether as and ld are the
GNU versions.
(options): --with-gnu-{as,ld,binutils} replaced by
single option --with-binutils=PATH specifying a -B option to gcc.
* aclocal.m4: Two new macros defined, LIBC_PROG_FOO_GNU and
LIBC_PROG_BINUTILS.
* configure.in: Allow the user to force configuration for
unsupported platforms with an undocumented option.
1997-09-22 16:55 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* sunrpc/get_myaddr.c (get_myaddress): Avoid loopback interfaces,
return loopback address only if there is no other interface.
* nis/Makefile: Add nis_callback libnsl-routines.
* nis/nis_add.c: Use new __do_niscall* interface.
* nis/nis_cache.c: Likewise.
* nis/nis_checkpoint.c: Likewise.
* nis/nis_lookup.c: Likewise.
* nis/nis_mkdir.c: Likewise.
* nis/nis_modify.c: Likewise.
* nis/nis_ping.c: Likewise.
* nis/nis_remove.c: Likewise.
* nis/nis_rmdir.c: Likewise.
* nis/nis_server.c: Likewise.
* nis/nis_util.c: Likewise.
* nis/rpcsvc/nis.h: Make C++ safe.
* nis/nss_nisplus/nisplus-publickey.c (getsecretkey): Fix use
of variables.
* nis/nis_findserv.c: Make thread safe.
* nis/nis_call.c: Add support for callback, Fix use of variables.
* nis/nis_table.c: Add support for callback, FOLLOW_PATH and
ALL_RESULTS.
* nis/nis_callback.c: New, callback functions.
* nis/nis_intern.h: Add callback declarations.
1997-09-20 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* string/bits/string2.h: Fix logic in preprocessor directive.
(__strsep_1c, __strsep_g): Don't declare __retval as pointing to
const, to save a cast and a possible warning.
1997-09-22 04:12 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/i386/i486/atomicity.h (exchange_and_add): Really address
memory in xadd not %1.
1997-09-21 13:56 Ulrich Drepper <drepper@cygnus.com>
* manual/maint.texi (Supported Configurations): Add SPARC64 to
list of supported platforms.
1997-09-24 23:03:42 +00:00
|
|
|
/* This is now the public function, which should find the fastest server */
|
1997-07-28 22:35:20 +00:00
|
|
|
|
|
|
|
struct findserv_req
|
|
|
|
{
|
|
|
|
struct sockaddr_in sin;
|
2017-08-07 19:55:34 +00:00
|
|
|
uint32_t xid;
|
1997-07-28 22:35:20 +00:00
|
|
|
u_int server_nr;
|
|
|
|
u_int server_ep;
|
|
|
|
};
|
|
|
|
|
1998-07-28 16:26:04 +00:00
|
|
|
|
2001-12-13 03:40:19 +00:00
|
|
|
static long int
|
|
|
|
__nis_findfastest_with_timeout (dir_binding *bind,
|
|
|
|
const struct timeval *timeout)
|
|
|
|
{
|
|
|
|
static const struct timeval TIMEOUT00 = { 0, 0 };
|
2000-04-22 03:58:39 +00:00
|
|
|
struct findserv_req *pings;
|
Update.
1997-09-25 00:23 Ulrich Drepper <drepper@cygnus.com>
* elf/dl-profile.c: Correct implementation.
* io/ftwtest-sh: Don't depend on TMPDIR == /tmp.
* locale/setlocale.c: Rewrite a bit for more clarity.
* math/Makefile (libm-calls): Add w_exp2.
* math/math_private.h: Add prototypes for __ieee754_exp2{,f,l}.
* sysdeps/libm-i387/s_exp2.S: Change name to __ieee754_exp2.
* sysdeps/libm-i387/s_exp2f.S: Likewise.
* sysdeps/libm-i387/s_exp2l.S: Likewise.
* sysdeps/libm-ieee754/k_standard.c: Add error cases for exp2.
* string/bits/string2.h (__strcpy_small): Optimize.
(__stpcpy_small): Likewise.
(strncpy): Use variable for dest argument since it's used more than
once.
(strncat): Likewise.
(strcmp): Add optimization for this function.
* sysdeps/i386/i486/string.h (strlen): Correctly use __builtin_strlen.
(__strcpy_small): Optimize.
(__stpcpy_small): Likewise.
(__stpcpy_c): Correctly use __mempcpy_* macros.
(__mempcpy_by2, __mempcpy_by4, __mempcpy_byn): Return pointer to
byte following last copied.
(strncat): Use variable for dest argument since it's used more than
once.
(strcmp): Add optimization for this function.
* sysdeps/i386/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): Use
.text and .previous to select correct section.
1997-09-23 19:56 Philip Blundell <Philip.Blundell@pobox.com>
* configure.in: Add `--disable-versioning' option to suppress the
use of symbol versions even if binutils claims to support it.
1997-09-24 20:10 Philip Blundell <Philip.Blundell@pobox.com>
* csu/Makefile (before-compile): Don't try to build abi-tags.h if
not using ELF.
1997-09-21 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/sofini.c [HAVE_DWARF2_UNWIND_INFO]: Supply termination for
the frame unwind info section.
* elf/soinit.c [HAVE_DWARF2_UNWIND_INFO]: Register and unregister
the frame unwind info.
* config.h.in (HAVE_DWARF2_UNWIND_INFO): Add #undef.
* configure.in: Check whether gcc supports DWARF2 unwind info.
* libc.map: Export frame handling tables.
1997-09-10 06:56 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/unix/sysv/linux/powerpc/bits/kernel_termios.h:
Use the size of the kernel's termios structure for ioctls.
* sysdeps/powerpc/dl-machine.h: Prepare for library profiling.
* sysdeps/powerpc/bits/mathinline.h: Add slightly slower versions
of the C9X FP comparison macros. Delete 'fabs' and 'sqrt' inline
routines, because gcc has them as internals.
* sysdeps/powerpc/Makefile (pic-ccflags): Define this instead of
CFLAGS-.os.
* sysdeps/powerpc/bzero.S: New file.
* sysdeps/powerpc/strcat.c: New file.
* sysdeps/powerpc/strcpy.S: New file.
* sysdeps/powerpc/stpcpy.S: New file.
* math/Makefile: Add atest_exp2, test-reduce.
* math/atest_exp2.c: New file.
* math/test-reduce.c: New file.
* sysdeps/libm-ieee754/Dist: New file.
* sysdeps/libm-ieee754/s_exp2.c: New file.
* sysdeps/libm-ieee754/s_exp2f.c: New file.
* sysdeps/libm-ieee754/t_exp2.h: New file.
* sysdeps/libm-ieee754/t_exp2f.h: New file.
* math/libm-test.c (exp2_test): Add some more tests.
* Rules: Use empty.os instead of empty.o, since it gets linked into
libc.so...
* configure.in: Add --disable-static to disable building .a files.
* config.make.in: Substitute the new variable.
* Makeconfig: Don't build .o files if not building .a files.
* elf/dl-runtime.c (fixup): Factor out call to elf_machine_relplt.
(profile_fixup): Likewise.
1997-09-23 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* posix/globtest.c (main): Change to directory passed as first
argument.
* posix/globtest.sh: Don't cd before running the program, instead
pass testdir as argument, so that $common_objpfx remains valid.
1997-09-23 18:01 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis/nis_call.c (__do_niscall2): Fix multiple Server support.
* nis/nis_findserver.c: Save latest working sockaddr_in.
1997-09-17 22:07 Zack Weinberg <zack@rabi.phys.columbia.edu>
* configure.in: Automatically determine whether as and ld are the
GNU versions.
(options): --with-gnu-{as,ld,binutils} replaced by
single option --with-binutils=PATH specifying a -B option to gcc.
* aclocal.m4: Two new macros defined, LIBC_PROG_FOO_GNU and
LIBC_PROG_BINUTILS.
* configure.in: Allow the user to force configuration for
unsupported platforms with an undocumented option.
1997-09-22 16:55 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* sunrpc/get_myaddr.c (get_myaddress): Avoid loopback interfaces,
return loopback address only if there is no other interface.
* nis/Makefile: Add nis_callback libnsl-routines.
* nis/nis_add.c: Use new __do_niscall* interface.
* nis/nis_cache.c: Likewise.
* nis/nis_checkpoint.c: Likewise.
* nis/nis_lookup.c: Likewise.
* nis/nis_mkdir.c: Likewise.
* nis/nis_modify.c: Likewise.
* nis/nis_ping.c: Likewise.
* nis/nis_remove.c: Likewise.
* nis/nis_rmdir.c: Likewise.
* nis/nis_server.c: Likewise.
* nis/nis_util.c: Likewise.
* nis/rpcsvc/nis.h: Make C++ safe.
* nis/nss_nisplus/nisplus-publickey.c (getsecretkey): Fix use
of variables.
* nis/nis_findserv.c: Make thread safe.
* nis/nis_call.c: Add support for callback, Fix use of variables.
* nis/nis_table.c: Add support for callback, FOLLOW_PATH and
ALL_RESULTS.
* nis/nis_callback.c: New, callback functions.
* nis/nis_intern.h: Add callback declarations.
1997-09-20 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* string/bits/string2.h: Fix logic in preprocessor directive.
(__strsep_1c, __strsep_g): Don't declare __retval as pointing to
const, to save a cast and a possible warning.
1997-09-22 04:12 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/i386/i486/atomicity.h (exchange_and_add): Really address
memory in xadd not %1.
1997-09-21 13:56 Ulrich Drepper <drepper@cygnus.com>
* manual/maint.texi (Supported Configurations): Add SPARC64 to
list of supported platforms.
1997-09-24 23:03:42 +00:00
|
|
|
struct sockaddr_in sin, saved_sin;
|
1997-07-28 22:35:20 +00:00
|
|
|
int found = -1;
|
2017-08-07 19:55:34 +00:00
|
|
|
uint32_t xid_seed;
|
1997-07-28 22:35:20 +00:00
|
|
|
int sock, dontblock = 1;
|
|
|
|
CLIENT *clnt;
|
2001-08-29 23:31:38 +00:00
|
|
|
u_long i, j, pings_count, pings_max, fastest = -1;
|
1997-07-28 22:35:20 +00:00
|
|
|
struct cu_data *cu;
|
|
|
|
|
|
|
|
pings_max = bind->server_len * 2; /* Reserve a little bit more memory
|
|
|
|
for multihomed hosts */
|
|
|
|
pings_count = 0;
|
2000-04-22 03:58:39 +00:00
|
|
|
pings = malloc (sizeof (struct findserv_req) * pings_max);
|
2017-08-07 19:55:34 +00:00
|
|
|
xid_seed = (uint32_t) (time (NULL) ^ getpid ());
|
1997-07-28 22:35:20 +00:00
|
|
|
|
2014-02-10 13:45:42 +00:00
|
|
|
if (__glibc_unlikely (pings == NULL))
|
2000-04-22 03:58:39 +00:00
|
|
|
return -1;
|
|
|
|
|
1997-07-28 22:35:20 +00:00
|
|
|
memset (&sin, '\0', sizeof (sin));
|
|
|
|
sin.sin_family = AF_INET;
|
|
|
|
for (i = 0; i < bind->server_len; i++)
|
|
|
|
for (j = 0; j < bind->server_val[i].ep.ep_len; ++j)
|
|
|
|
if (strcmp (bind->server_val[i].ep.ep_val[j].family, "inet") == 0)
|
Break some lines before not after operators.
The GNU Coding Standards specify that line breaks in expressions
should go before an operator, not after one. This patch fixes various
code to do this. It only changes code that appears to be mostly
following GNU style anyway, not files and directories with
substantially different formatting. It is not exhaustive even for
files using GNU style (for example, changes to sysdeps files are
deferred for subsequent cleanups). Some files changed are shared with
gnulib, but most are specific to glibc. Changes were made manually,
with places to change found by grep (so some cases, e.g. where the
operator was followed by a comment at end of line, are particularly
liable to have been missed by grep, but I did include cases where the
operator was followed by backslash-newline).
This patch generally does not attempt to address other coding style
issues in the expressions changed (for example, missing spaces before
'(', or lack of parentheses to ensure indentation of continuation
lines properly reflects operator precedence).
Tested for x86_64, and with build-many-glibcs.py.
* benchtests/bench-memmem.c (simple_memmem): Break lines before
rather than after operators.
* benchtests/bench-skeleton.c (TIMESPEC_AFTER): Likewise.
* crypt/md5.c (md5_finish_ctx): Likewise.
* crypt/sha256.c (__sha256_finish_ctx): Likewise.
* crypt/sha512.c (__sha512_finish_ctx): Likewise.
* elf/cache.c (load_aux_cache): Likewise.
* elf/dl-load.c (open_verify): Likewise.
* elf/get-dynamic-info.h (elf_get_dynamic_info): Likewise.
* elf/readelflib.c (process_elf_file): Likewise.
* elf/rtld.c (dl_main): Likewise.
* elf/sprof.c (generate_call_graph): Likewise.
* hurd/ctty-input.c (_hurd_ctty_input): Likewise.
* hurd/ctty-output.c (_hurd_ctty_output): Likewise.
* hurd/dtable.c (reauth_dtable): Likewise.
* hurd/getdport.c (__getdport): Likewise.
* hurd/hurd/signal.h (_hurd_interrupted_rpc_timeout): Likewise.
* hurd/hurd/sigpreempt.h (HURD_PREEMPT_SIGNAL_P): Likewise.
* hurd/hurdfault.c (_hurdsig_fault_catch_exception_raise):
Likewise.
* hurd/hurdioctl.c (fioctl): Likewise.
* hurd/hurdselect.c (_hurd_select): Likewise.
* hurd/hurdsig.c (_hurdsig_abort_rpcs): Likewise.
(STOPSIGS): Likewise.
* hurd/hurdstartup.c (_hurd_startup): Likewise.
* hurd/intr-msg.c (_hurd_intr_rpc_mach_msg): Likewise.
* hurd/lookup-retry.c (__hurd_file_name_lookup_retry): Likewise.
* hurd/msgportdemux.c (msgport_server): Likewise.
* hurd/setauth.c (_hurd_setauth): Likewise.
* include/features.h (__GLIBC_USE_DEPRECATED_SCANF): Likewise.
* libio/libioP.h [IO_DEBUG] (CHECK_FILE): Likewise.
* locale/programs/ld-ctype.c (set_class_defaults): Likewise.
* localedata/tests-mbwc/tst_swscanf.c (tst_swscanf): Likewise.
* login/tst-utmp.c (do_check): Likewise.
(simulate_login): Likewise.
* mach/lowlevellock.h (lll_lock): Likewise.
(lll_trylock): Likewise.
* math/test-fenv.c (ALL_EXC): Likewise.
* math/test-fenvinline.c (ALL_EXC): Likewise.
* misc/sys/cdefs.h (__attribute_deprecated_msg__): Likewise.
* nis/nis_call.c (__do_niscall3): Likewise.
* nis/nis_callback.c (cb_prog_1): Likewise.
* nis/nis_defaults.c (searchaccess): Likewise.
* nis/nis_findserv.c (__nis_findfastest_with_timeout): Likewise.
* nis/nis_ismember.c (internal_ismember): Likewise.
* nis/nis_local_names.c (nis_local_principal): Likewise.
* nis/nss_nis/nis-rpc.c (_nss_nis_getrpcbyname_r): Likewise.
* nis/nss_nisplus/nisplus-netgrp.c (_nss_nisplus_getnetgrent_r):
Likewise.
* nis/ypclnt.c (yp_match): Likewise.
(yp_first): Likewise.
(yp_next): Likewise.
(yp_master): Likewise.
(yp_order): Likewise.
* nscd/hstcache.c (cache_addhst): Likewise.
* nscd/initgrcache.c (addinitgroupsX): Likewise.
* nss/nss_compat/compat-pwd.c (copy_pwd_changes): Likewise.
(internal_getpwuid_r): Likewise.
* nss/nss_compat/compat-spwd.c (copy_spwd_changes): Likewise.
* posix/glob.h (__GLOB_FLAGS): Likewise.
* posix/regcomp.c (peek_token): Likewise.
(peek_token_bracket): Likewise.
(parse_expression): Likewise.
* posix/regexec.c (sift_states_iter_mb): Likewise.
(check_node_accept_bytes): Likewise.
* posix/tst-spawn3.c (do_test): Likewise.
* posix/wordexp-test.c (testit): Likewise.
* posix/wordexp.c (parse_tilde): Likewise.
(exec_comm): Likewise.
* posix/wordexp.h (__WRDE_FLAGS): Likewise.
* resource/vtimes.c (TIMEVAL_TO_VTIMES): Likewise.
* setjmp/sigjmp.c (__sigjmp_save): Likewise.
* stdio-common/printf_fp.c (__printf_fp_l): Likewise.
* stdio-common/tst-fileno.c (do_test): Likewise.
* stdio-common/vfprintf-internal.c (vfprintf): Likewise.
* stdlib/strfmon_l.c (__vstrfmon_l_internal): Likewise.
* stdlib/strtod_l.c (round_and_return): Likewise.
(____STRTOF_INTERNAL): Likewise.
* stdlib/tst-strfrom.h (TEST_STRFROM): Likewise.
* string/strcspn.c (STRCSPN): Likewise.
* string/test-memmem.c (simple_memmem): Likewise.
* termios/tcsetattr.c (tcsetattr): Likewise.
* time/alt_digit.c (_nl_parse_alt_digit): Likewise.
* time/asctime.c (asctime_internal): Likewise.
* time/strptime_l.c (__strptime_internal): Likewise.
* time/sys/time.h (timercmp): Likewise.
* time/tzfile.c (__tzfile_compute): Likewise.
2019-02-22 01:32:36 +00:00
|
|
|
if ((bind->server_val[i].ep.ep_val[j].proto == NULL)
|
|
|
|
|| (bind->server_val[i].ep.ep_val[j].proto[0] == '-')
|
|
|
|
|| (bind->server_val[i].ep.ep_val[j].proto[0] == '\0'))
|
1997-07-28 22:35:20 +00:00
|
|
|
{
|
|
|
|
sin.sin_addr.s_addr =
|
|
|
|
inetstr2int (bind->server_val[i].ep.ep_val[j].uaddr);
|
|
|
|
if (sin.sin_addr.s_addr == 0)
|
|
|
|
continue;
|
1998-06-01 13:10:54 +00:00
|
|
|
sin.sin_port = htons (__pmap_getnisport (&sin, NIS_PROG,
|
|
|
|
NIS_VERSION,
|
|
|
|
IPPROTO_UDP));
|
1997-07-28 22:35:20 +00:00
|
|
|
if (sin.sin_port == 0)
|
|
|
|
continue;
|
|
|
|
|
|
|
|
if (pings_count >= pings_max)
|
|
|
|
{
|
2000-04-22 03:58:39 +00:00
|
|
|
struct findserv_req *new_pings;
|
|
|
|
|
1997-07-28 22:35:20 +00:00
|
|
|
pings_max += 10;
|
2000-04-22 03:58:39 +00:00
|
|
|
new_pings = realloc (pings, sizeof (struct findserv_req) *
|
|
|
|
pings_max);
|
2014-02-10 13:45:42 +00:00
|
|
|
if (__glibc_unlikely (new_pings == NULL))
|
2000-04-22 03:58:39 +00:00
|
|
|
{
|
|
|
|
free (pings);
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
pings = new_pings;
|
1997-07-28 22:35:20 +00:00
|
|
|
}
|
2000-04-22 03:58:39 +00:00
|
|
|
memcpy ((char *) &pings[pings_count].sin, (char *) &sin,
|
1997-07-28 22:35:20 +00:00
|
|
|
sizeof (sin));
|
2019-02-27 13:55:45 +00:00
|
|
|
memcpy ((char *)&saved_sin, (char *)&sin, sizeof (sin));
|
2001-08-29 23:31:38 +00:00
|
|
|
pings[pings_count].xid = xid_seed + pings_count;
|
2000-04-22 03:58:39 +00:00
|
|
|
pings[pings_count].server_nr = i;
|
|
|
|
pings[pings_count].server_ep = j;
|
1997-07-28 22:35:20 +00:00
|
|
|
++pings_count;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Make sure at least one server was assigned */
|
|
|
|
if (pings_count == 0)
|
|
|
|
{
|
|
|
|
free (pings);
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Create RPC handle */
|
2017-04-19 05:45:04 +00:00
|
|
|
sock = socket (AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, IPPROTO_UDP);
|
2001-12-13 03:40:19 +00:00
|
|
|
clnt = clntudp_create (&saved_sin, NIS_PROG, NIS_VERSION, *timeout, &sock);
|
1997-07-28 22:35:20 +00:00
|
|
|
if (clnt == NULL)
|
|
|
|
{
|
|
|
|
close (sock);
|
|
|
|
free (pings);
|
|
|
|
return -1;
|
|
|
|
}
|
1998-06-01 13:10:54 +00:00
|
|
|
auth_destroy (clnt->cl_auth);
|
1997-07-28 22:35:20 +00:00
|
|
|
clnt->cl_auth = authunix_create_default ();
|
|
|
|
cu = (struct cu_data *) clnt->cl_private;
|
|
|
|
ioctl (sock, FIONBIO, &dontblock);
|
|
|
|
/* Send to all servers the NULLPROC */
|
|
|
|
for (i = 0; i < pings_count; ++i)
|
|
|
|
{
|
|
|
|
/* clntudp_call() will increment, subtract one */
|
2017-08-07 19:55:34 +00:00
|
|
|
*((uint32_t *) (cu->cu_outbuf)) = pings[i].xid - 1;
|
2000-04-22 03:58:39 +00:00
|
|
|
memcpy ((char *) &cu->cu_raddr, (char *) &pings[i].sin,
|
Update.
1997-09-25 00:23 Ulrich Drepper <drepper@cygnus.com>
* elf/dl-profile.c: Correct implementation.
* io/ftwtest-sh: Don't depend on TMPDIR == /tmp.
* locale/setlocale.c: Rewrite a bit for more clarity.
* math/Makefile (libm-calls): Add w_exp2.
* math/math_private.h: Add prototypes for __ieee754_exp2{,f,l}.
* sysdeps/libm-i387/s_exp2.S: Change name to __ieee754_exp2.
* sysdeps/libm-i387/s_exp2f.S: Likewise.
* sysdeps/libm-i387/s_exp2l.S: Likewise.
* sysdeps/libm-ieee754/k_standard.c: Add error cases for exp2.
* string/bits/string2.h (__strcpy_small): Optimize.
(__stpcpy_small): Likewise.
(strncpy): Use variable for dest argument since it's used more than
once.
(strncat): Likewise.
(strcmp): Add optimization for this function.
* sysdeps/i386/i486/string.h (strlen): Correctly use __builtin_strlen.
(__strcpy_small): Optimize.
(__stpcpy_small): Likewise.
(__stpcpy_c): Correctly use __mempcpy_* macros.
(__mempcpy_by2, __mempcpy_by4, __mempcpy_byn): Return pointer to
byte following last copied.
(strncat): Use variable for dest argument since it's used more than
once.
(strcmp): Add optimization for this function.
* sysdeps/i386/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): Use
.text and .previous to select correct section.
1997-09-23 19:56 Philip Blundell <Philip.Blundell@pobox.com>
* configure.in: Add `--disable-versioning' option to suppress the
use of symbol versions even if binutils claims to support it.
1997-09-24 20:10 Philip Blundell <Philip.Blundell@pobox.com>
* csu/Makefile (before-compile): Don't try to build abi-tags.h if
not using ELF.
1997-09-21 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/sofini.c [HAVE_DWARF2_UNWIND_INFO]: Supply termination for
the frame unwind info section.
* elf/soinit.c [HAVE_DWARF2_UNWIND_INFO]: Register and unregister
the frame unwind info.
* config.h.in (HAVE_DWARF2_UNWIND_INFO): Add #undef.
* configure.in: Check whether gcc supports DWARF2 unwind info.
* libc.map: Export frame handling tables.
1997-09-10 06:56 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/unix/sysv/linux/powerpc/bits/kernel_termios.h:
Use the size of the kernel's termios structure for ioctls.
* sysdeps/powerpc/dl-machine.h: Prepare for library profiling.
* sysdeps/powerpc/bits/mathinline.h: Add slightly slower versions
of the C9X FP comparison macros. Delete 'fabs' and 'sqrt' inline
routines, because gcc has them as internals.
* sysdeps/powerpc/Makefile (pic-ccflags): Define this instead of
CFLAGS-.os.
* sysdeps/powerpc/bzero.S: New file.
* sysdeps/powerpc/strcat.c: New file.
* sysdeps/powerpc/strcpy.S: New file.
* sysdeps/powerpc/stpcpy.S: New file.
* math/Makefile: Add atest_exp2, test-reduce.
* math/atest_exp2.c: New file.
* math/test-reduce.c: New file.
* sysdeps/libm-ieee754/Dist: New file.
* sysdeps/libm-ieee754/s_exp2.c: New file.
* sysdeps/libm-ieee754/s_exp2f.c: New file.
* sysdeps/libm-ieee754/t_exp2.h: New file.
* sysdeps/libm-ieee754/t_exp2f.h: New file.
* math/libm-test.c (exp2_test): Add some more tests.
* Rules: Use empty.os instead of empty.o, since it gets linked into
libc.so...
* configure.in: Add --disable-static to disable building .a files.
* config.make.in: Substitute the new variable.
* Makeconfig: Don't build .o files if not building .a files.
* elf/dl-runtime.c (fixup): Factor out call to elf_machine_relplt.
(profile_fixup): Likewise.
1997-09-23 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* posix/globtest.c (main): Change to directory passed as first
argument.
* posix/globtest.sh: Don't cd before running the program, instead
pass testdir as argument, so that $common_objpfx remains valid.
1997-09-23 18:01 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis/nis_call.c (__do_niscall2): Fix multiple Server support.
* nis/nis_findserver.c: Save latest working sockaddr_in.
1997-09-17 22:07 Zack Weinberg <zack@rabi.phys.columbia.edu>
* configure.in: Automatically determine whether as and ld are the
GNU versions.
(options): --with-gnu-{as,ld,binutils} replaced by
single option --with-binutils=PATH specifying a -B option to gcc.
* aclocal.m4: Two new macros defined, LIBC_PROG_FOO_GNU and
LIBC_PROG_BINUTILS.
* configure.in: Allow the user to force configuration for
unsupported platforms with an undocumented option.
1997-09-22 16:55 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* sunrpc/get_myaddr.c (get_myaddress): Avoid loopback interfaces,
return loopback address only if there is no other interface.
* nis/Makefile: Add nis_callback libnsl-routines.
* nis/nis_add.c: Use new __do_niscall* interface.
* nis/nis_cache.c: Likewise.
* nis/nis_checkpoint.c: Likewise.
* nis/nis_lookup.c: Likewise.
* nis/nis_mkdir.c: Likewise.
* nis/nis_modify.c: Likewise.
* nis/nis_ping.c: Likewise.
* nis/nis_remove.c: Likewise.
* nis/nis_rmdir.c: Likewise.
* nis/nis_server.c: Likewise.
* nis/nis_util.c: Likewise.
* nis/rpcsvc/nis.h: Make C++ safe.
* nis/nss_nisplus/nisplus-publickey.c (getsecretkey): Fix use
of variables.
* nis/nis_findserv.c: Make thread safe.
* nis/nis_call.c: Add support for callback, Fix use of variables.
* nis/nis_table.c: Add support for callback, FOLLOW_PATH and
ALL_RESULTS.
* nis/nis_callback.c: New, callback functions.
* nis/nis_intern.h: Add callback declarations.
1997-09-20 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* string/bits/string2.h: Fix logic in preprocessor directive.
(__strsep_1c, __strsep_g): Don't declare __retval as pointing to
const, to save a cast and a possible warning.
1997-09-22 04:12 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/i386/i486/atomicity.h (exchange_and_add): Really address
memory in xadd not %1.
1997-09-21 13:56 Ulrich Drepper <drepper@cygnus.com>
* manual/maint.texi (Supported Configurations): Add SPARC64 to
list of supported platforms.
1997-09-24 23:03:42 +00:00
|
|
|
sizeof (struct sockaddr_in));
|
|
|
|
/* Transmit to NULLPROC, return immediately. */
|
2001-12-13 03:40:19 +00:00
|
|
|
clnt_call (clnt, NULLPROC,
|
2001-08-29 23:31:38 +00:00
|
|
|
(xdrproc_t) xdr_void, (caddr_t) 0,
|
|
|
|
(xdrproc_t) xdr_void, (caddr_t) 0, TIMEOUT00);
|
1997-07-28 22:35:20 +00:00
|
|
|
}
|
2001-12-13 03:40:19 +00:00
|
|
|
|
|
|
|
while (found == -1) {
|
|
|
|
/* Receive reply from NULLPROC asynchronously. Note null inproc. */
|
|
|
|
int rc = clnt_call (clnt, NULLPROC,
|
|
|
|
(xdrproc_t) NULL, (caddr_t) 0,
|
|
|
|
(xdrproc_t) xdr_void, (caddr_t) 0,
|
|
|
|
*timeout);
|
|
|
|
if (RPC_SUCCESS == rc) {
|
2017-08-07 19:55:34 +00:00
|
|
|
uint32_t val;
|
|
|
|
memcpy (&val, cu->cu_inbuf, sizeof (uint32_t));
|
2011-12-03 02:13:10 +00:00
|
|
|
fastest = val - xid_seed;
|
2001-08-29 23:31:38 +00:00
|
|
|
if (fastest < pings_count) {
|
2001-12-13 03:40:19 +00:00
|
|
|
bind->server_used = pings[fastest].server_nr;
|
|
|
|
bind->current_ep = pings[fastest].server_ep;
|
|
|
|
found = 1;
|
2001-08-29 23:31:38 +00:00
|
|
|
}
|
2001-12-13 03:40:19 +00:00
|
|
|
} else {
|
|
|
|
/* clnt_perror(clnt, "__nis_findfastest"); */
|
|
|
|
break;
|
1997-07-28 22:35:20 +00:00
|
|
|
}
|
2001-12-13 03:40:19 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
1997-07-28 22:35:20 +00:00
|
|
|
auth_destroy (clnt->cl_auth);
|
|
|
|
clnt_destroy (clnt);
|
|
|
|
close (sock);
|
|
|
|
|
|
|
|
free (pings);
|
|
|
|
|
|
|
|
return found;
|
2001-12-13 03:40:19 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
long int
|
|
|
|
__nis_findfastest (dir_binding *bind)
|
|
|
|
{
|
|
|
|
struct timeval timeout = { __NIS_PING_TIMEOUT_START, 0 };
|
|
|
|
long int found = -1;
|
|
|
|
long int retry = __NIS_PING_RETRY + 1;
|
|
|
|
|
|
|
|
while (retry--)
|
|
|
|
{
|
|
|
|
found = __nis_findfastest_with_timeout (bind, &timeout);
|
|
|
|
if (found != -1)
|
|
|
|
break;
|
|
|
|
timeout.tv_sec += __NIS_PING_TIMEOUT_INCREMENT;
|
|
|
|
}
|
|
|
|
|
|
|
|
return found;
|
1997-07-28 22:35:20 +00:00
|
|
|
}
|