+2017-03-21 Thorsten Kukuk <kukuk@suse.com>
+
+ * config.h.in: Add LINK_OBSOLETE_NSL.
+ * config.make.in: Add build-obsolete-nsl.
+ * configure.ac: Add obsolete-nsl option.
+ * include/libc-symbols.h: Define libnsl_hidden_nolink_def.
+ * include/rpcsvc/yp.h: Add missing functions as libnsl_hidden_proto.
+ * include/rpcsvc/nislib.h: Likewise.
+ * include/rpcsvc/ypclnt.h: Likewise.
+ * manual/install.texi: Document --enable-obsolete-nsl.
+ * nis/Makefile: Build only libnsl by default (add build-obsolete-nsl).
+ * nis/nis_add.c: Replace libnsl_hidden_def with
+ libnsl_hidden_nolink_def.
+ * nis/nis_addmember.c: Likewise.
+ * nis/nis_call.c: Likewise.
+ * nis/nis_clone_obj.c: Likewise.
+ * nis/nis_defaults.c: Likeise.
+ * nis/nis_domain_of_r.c: Likewise.
+ * nis/nis_error.c: Likewise.
+ * nis/nis_file.c: Likewise.
+ * nis/nis_free.c: Likewise.
+ * nis_local_names.c: Likewise.
+ * nis/nis_lookup.c: Likewise.
+ * nis/nis_modify.c: Likewise.
+ * nis/nis_print.c: Likewise.
+ * nis/nis_remove.c: Likewise.
+ * nis/nis_table.c: Likewise.
+ * nis/nis_util.c: Likewise.
+ * nis/nis_xdr.c: Likewise.
+ * nis/yp_xdr.c: Likewise.
+ * nis/ypclnt.c: Likewise.
+ * nis/ypupdate_xdr.c: Likewise.
+ * nis/nis_checkpoint.c: Add libnsl_hidden_nolink_def to all functions.
+ * nis/nis_clone_dir.c: Likewise.
+ * nis/nis_clone_res.c: Likewise.
+ * nis/nis_creategroup.c: Likewise.
+ * nis/nis_destroygroup.c: Likewise.
+ * nis/nis_domain_of.c: Likewise.
+ * nis/nis_getservlist.c: Likewise.
+ * nis/nis_ismember.c: Likewise.
+ * nis/nis_mkdir.c: Likewise.
+ * nis/nis_ping.c: Likewise.
+ * nis/nis_print_group_entry.c: Likewise.
+ * nis/nis_removemember.c: Likewise.
+ * nis/nis_rmdir.c: Likewise.
+ * nis/nis_server.c: Likewise.
+ * nis/nis_subr.c: Likewise.
+ * nis/nis_verifygroup.c: Likewise.
+
2017-03-20 Joseph Myers <joseph@codesourcery.com>
[BZ #21279]
by default. Applications needing features missing from TIRPC should
consider the rpcsvc-proto project developed by Thorsten Kukuk (SUSE).
+* The NIS(+) name service modules, libnss_nis, libnss_nisplus, and
+ libnss_compat, are deprecated, and will not be built or installed by
+ default. Replacement implementations based on TIRPC, which
+ additionally support IPv6, are available from
+ <https://github.com/thkukuk/libnss_{compat,nis,nisplus}>.
+
+* The NIS(+) support library, libnsl, is deprecated. By default, a
+ compatibility shared library will be built and installed, but not
+ headers or development libraries.
+
+ Only a few NIS-related programs require this library.
+ A replacement implementation based on TIRPC is available from
+ <https://github.com/thkukuk/libnsl>. Like the replacement NIS(+)
+ name service modules, the replacement supports IPv6, and it can be
+ coinstalled with the compatibility shared library from glibc.
+
+* New configure option --enable-obsolete-nsl will cause libnsl's
+ headers, and the NIS(+) name service modules, to be built and
+ installed. This option may be removed in a future release.
+
Security related changes:
[Add security related changes here]
to link against. */
#undef LINK_OBSOLETE_RPC
+/* Define if obsolete libnsl code should be made available for user-level
+ code to link against. */
+#undef LINK_OBSOLETE_NSL
+
/* Define if Systemtap <sys/sdt.h> probes should be defined. */
#undef USE_STAP_PROBE
cross-compiling = @cross_compiling@
force-install = @force_install@
link-obsolete-rpc = @link_obsolete_rpc@
+build-obsolete-nsl = @build_obsolete_nsl@
build-nscd = @build_nscd@
use-nscd = @use_nscd@
build-hardcoded-path-in-tests= @hardcoded_path_in_tests@
have_tunables
build_pt_chown
build_nscd
+build_obsolete_nsl
link_obsolete_rpc
libc_cv_static_nss_crypt
libc_cv_nss_crypt
enable_multi_arch
enable_nss_crypt
enable_obsolete_rpc
+enable_obsolete_nsl
enable_systemtap
enable_build_nscd
enable_nscd
--enable-nss-crypt enable libcrypt to use nss
--enable-obsolete-rpc build and install the obsolete RPC code for
link-time usage
+ --enable-obsolete-nsl build and install the obsolete libnsl library and
+ depending NSS modules
--enable-systemtap enable systemtap static probe points [default=no]
--disable-build-nscd disable building and installing the nscd daemon
--disable-nscd library functions will not contact the nscd daemon
fi
+# Check whether --enable-obsolete-nsl was given.
+if test "${enable_obsolete_nsl+set}" = set; then :
+ enableval=$enable_obsolete_nsl; build_obsolete_nsl=$enableval
+else
+ build_obsolete_nsl=no
+fi
+
+
+
+if test "$build_obsolete_nsl" = yes; then
+ $as_echo "#define LINK_OBSOLETE_NSL 1" >>confdefs.h
+
+fi
+
# Check whether --enable-systemtap was given.
if test "${enable_systemtap+set}" = set; then :
enableval=$enable_systemtap; systemtap=$enableval
AC_DEFINE(LINK_OBSOLETE_RPC)
fi
+AC_ARG_ENABLE([obsolete-nsl],
+ AC_HELP_STRING([--enable-obsolete-nsl],
+ [build and install the obsolete libnsl library and depending NSS modules]),
+ [build_obsolete_nsl=$enableval],
+ [build_obsolete_nsl=no])
+AC_SUBST(build_obsolete_nsl)
+
+if test "$build_obsolete_nsl" = yes; then
+ AC_DEFINE(LINK_OBSOLETE_NSL)
+fi
+
AC_ARG_ENABLE([systemtap],
[AS_HELP_STRING([--enable-systemtap],
[enable systemtap static probe points @<:@default=no@:>@])],
# define libnsl_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
# define libnsl_hidden_tls_proto(name, attrs...) \
hidden_tls_proto (name, ##attrs)
+# ifdef LINK_OBSOLETE_NSL
+ /* libnsl_hidden_nolink should only get used in libnsl code. */
+# define libnsl_hidden_nolink_def(name, version) libnsl_hidden_def (name)
+# else
+# define libnsl_hidden_nolink_def(name, version) hidden_nolink (name, libnsl, version)
+# endif
# define libnsl_hidden_def(name) hidden_def (name)
# define libnsl_hidden_weak(name) hidden_weak (name)
# define libnsl_hidden_ver(local, name) hidden_ver (local, name)
libnsl_hidden_proto (nis_free_object)
libnsl_hidden_proto (nis_freeresult)
libnsl_hidden_proto (readColdStartFile)
+libnsl_hidden_proto (writeColdStartFile)
libnsl_hidden_proto (nis_print_rights)
libnsl_hidden_proto (nis_print_directory)
libnsl_hidden_proto (nis_print_group)
libnsl_hidden_proto (__nis_default_group)
libnsl_hidden_proto (__nis_default_access)
libnsl_hidden_proto (nis_clone_object)
+libnsl_hidden_proto (nis_clone_result)
+libnsl_hidden_proto (nis_print_group_entry)
+libnsl_hidden_proto (nis_verifygroup)
+libnsl_hidden_proto (nis_leaf_of)
+libnsl_hidden_proto (nis_read_obj)
+libnsl_hidden_proto (nis_print_result)
+libnsl_hidden_proto (nis_sperror)
+libnsl_hidden_proto (nis_add_entry)
+libnsl_hidden_proto (nis_mkdir)
+libnsl_hidden_proto (nis_getservlist)
+libnsl_hidden_proto (nis_stats)
+libnsl_hidden_proto (nis_write_obj)
+libnsl_hidden_proto (nis_servstate)
+libnsl_hidden_proto (nis_freetags)
+libnsl_hidden_proto (nis_modify_entry)
+libnsl_hidden_proto (nis_remove_entry)
+libnsl_hidden_proto (nis_first_entry)
+libnsl_hidden_proto (nis_next_entry)
+libnsl_hidden_proto (nis_checkpoint)
+libnsl_hidden_proto (nis_perror)
+libnsl_hidden_proto (nis_lerror)
+libnsl_hidden_proto (nis_freeservlist)
+libnsl_hidden_proto (nis_ismember)
+libnsl_hidden_proto (nis_creategroup)
+libnsl_hidden_proto (nis_destroygroup)
+libnsl_hidden_proto (nis_name_of)
+libnsl_hidden_proto (nis_ping)
+libnsl_hidden_proto (nis_rmdir)
+libnsl_hidden_proto (nis_addmember)
+libnsl_hidden_proto (nis_removemember)
+libnsl_hidden_proto (nis_domain_of)
+libnsl_hidden_proto (nis_clone_directory)
extern const_nis_name __nis_domain_of (const_nis_name) __THROW;
libnsl_hidden_proto (xdr_ypresp_order)
libnsl_hidden_proto (xdr_ypbind_resp)
libnsl_hidden_proto (xdr_ypresp_master)
+libnsl_hidden_proto (xdr_ypreq_xfr)
+libnsl_hidden_proto (xdr_ypresp_xfr)
+libnsl_hidden_proto (xdr_yppushresp_xfr)
+libnsl_hidden_proto (xdr_ypbind_setdom)
# endif /* !_ISOMAC */
#endif
libnsl_hidden_proto (yp_get_default_domain)
libnsl_hidden_proto (ypprot_err)
libnsl_hidden_proto (yp_master)
+libnsl_hidden_proto (yp_update)
+libnsl_hidden_proto (yperr_string)
+libnsl_hidden_proto (yp_unbind)
+libnsl_hidden_proto (yp_order)
+libnsl_hidden_proto (yp_first)
+libnsl_hidden_proto (yp_next)
+libnsl_hidden_proto (yp_match)
+libnsl_hidden_proto (yp_all)
+libnsl_hidden_proto (__yp_check)
# endif /* !_ISOMAC */
#endif
single environment variable @env{GLIBC_TUNABLES}.
@end table
+@item --enable-obsolete-nsl
+By default, libnsl is only built as shared library for backward
+compatibility and the NSS modules libnss_compat, libnss_nis and
+libnss_nisplus are not built at all.
+Use this option to enable libnsl with all depending NSS modules and
+header files.
+
@item --build=@var{build-system}
@itemx --host=@var{host-system}
These options are for cross-compiling. If you specify both options and
aux := nis_hash
-ifeq ($(link-obsolete-rpc),yes)
+ifeq ($(build-obsolete-nsl),yes)
headers := $(wildcard rpcsvc/*.[hx])
-endif
# These are the databases available for the nis (and perhaps later nisplus)
# service. This must be a superset of the services in nss.
# Specify rules for the nss_* modules.
services := nis nisplus compat
+endif
-extra-libs = libnsl $(services:%=libnss_%)
+extra-libs = libnsl
+ifeq ($(build-obsolete-nsl),yes)
+extra-libs += $(services:%=libnss_%)
+endif
# These libraries will be built in the `others' pass rather than
# the `lib' pass, because they depend on libc.so being built already.
extra-libs-others = $(extra-libs)
+ifeq ($(build-obsolete-nsl),yes)
# The sources are found in the appropriate subdir.
subdir-dirs = $(services:%=nss_%)
vpath %.c $(subdir-dirs)
+endif
libnsl-routines = yp_xdr ypclnt ypupdate_xdr \
nis_subr nis_local_names nis_free nis_file \
nis_findserv nis_callback nis_clone_dir nis_clone_obj\
nis_clone_res nss-default
+ifeq ($(build-obsolete-nsl),yes)
libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups)
libnss_compat-inhibit-o = $(filter-out .os,$(object-suffixes))
libnss_nisplus-routines := $(addprefix nisplus-,$(databases)) nisplus-parser \
nss-nisplus nisplus-initgroups
libnss_nisplus-inhibit-o = $(filter-out .os,$(object-suffixes))
+endif
include ../Rules
+ifeq ($(build-obsolete-nsl),yes)
$(objpfx)libnss_compat.so: $(objpfx)libnsl.so$(libnsl.so-version)
$(objpfx)libnss_nis.so: $(objpfx)libnsl.so$(libnsl.so-version) \
$(common-objpfx)nss/libnss_files.so
$(objpfx)libnss_nisplus.so: $(objpfx)libnsl.so$(libnsl.so-version)
+endif
libnsl-libc = $(common-objpfx)linkobj/libc.so
# Target-specific variable setting to link objects using deprecated
ifeq ($(build-shared),yes)
$(others:%=$(objpfx)%): $(objpfx)libnsl.so$(libnsl.so-version)
else
+ifeq ($(build-obsolete-nsl),yes)
$(others:%=$(objpfx)%): $(objpfx)libnsl.a
endif
+endif
return res;
}
-libnsl_hidden_def (nis_add)
+libnsl_hidden_nolink_def (nis_add, GLIBC_2_1)
else
return NIS_FAIL;
}
+libnsl_hidden_nolink_def (nis_addmember, GLIBC_2_1)
clnt_destroy (bind->clnt);
}
}
-libnsl_hidden_def (__nisbind_destroy)
+libnsl_hidden_nolink_def (__nisbind_destroy, GLIBC_2_1)
nis_error
__nisbind_next (dir_binding *bind)
return NIS_FAIL;
}
-libnsl_hidden_def (__nisbind_next)
+libnsl_hidden_nolink_def (__nisbind_next, GLIBC_2_1)
static struct ckey_cache_entry
{
return NIS_SUCCESS;
}
-libnsl_hidden_def (__nisbind_connect)
+libnsl_hidden_nolink_def (__nisbind_connect, GLIBC_2_1)
nis_error
__nisbind_create (dir_binding *dbp, const nis_server *serv_val,
return NIS_SUCCESS;
}
-libnsl_hidden_def (__nisbind_create)
+libnsl_hidden_nolink_def (__nisbind_create, GLIBC_2_1)
/* __nisbind_connect (dbp) must be run before calling this function !
So we could use the same binding twice */
return retcode;
}
-libnsl_hidden_def (__do_niscall3)
+libnsl_hidden_nolink_def (__do_niscall3, GLIBC_PRIVATE)
nis_error
return retcode;
}
-libnsl_hidden_def (__prepare_niscall)
+libnsl_hidden_nolink_def (__prepare_niscall, GLIBC_PRIVATE)
nis_error
return res;
}
+libnsl_hidden_nolink_def (nis_checkpoint, GLIBC_2_1)
return res;
}
+libnsl_hidden_nolink_def(nis_clone_directory, GLIBC_2_1)
return res;
}
-libnsl_hidden_def (nis_clone_object)
+libnsl_hidden_nolink_def (nis_clone_object, GLIBC_2_1)
return res;
}
+libnsl_hidden_nolink_def (nis_clone_result, GLIBC_2_1)
}
return NIS_FAIL;
}
+libnsl_hidden_nolink_def (nis_creategroup, GLIBC_2_1)
return strdup (default_owner ?: nis_local_principal ());
}
-libnsl_hidden_def (__nis_default_owner)
+libnsl_hidden_nolink_def (__nis_default_owner, GLIBC_2_1)
nis_name
return strdup (default_group ?: nis_local_group ());
}
-libnsl_hidden_def (__nis_default_group)
+libnsl_hidden_nolink_def (__nis_default_group, GLIBC_2_1)
uint32_t
return result;
}
-libnsl_hidden_def (__nis_default_access)
+libnsl_hidden_nolink_def (__nis_default_access, GLIBC_2_1)
return NIS_FAIL;
}
+libnsl_hidden_nolink_def (nis_destroygroup, GLIBC_2_1)
return nis_domain_of_r (name, result, NIS_MAXNAMELEN);
}
+libnsl_hidden_nolink_def (nis_domain_of, GLIBC_2_1)
const_nis_name
__nis_domain_of (const_nis_name name)
return memcpy (buffer, cptr, cptr_len + 1);
}
-libnsl_hidden_def (nis_domain_of_r)
+libnsl_hidden_nolink_def (nis_domain_of_r, GLIBC_2_1)
else
return gettext (msgstr.str + msgidx[status]);
}
-libnsl_hidden_def (nis_sperrno)
+libnsl_hidden_nolink_def (nis_sperrno, GLIBC_2_1)
void
nis_perror (const nis_error status, const char *label)
{
fprintf (stderr, "%s: %s\n", label, nis_sperrno (status));
}
+libnsl_hidden_nolink_def (nis_perror, GLIBC_2_1)
void
nis_lerror (const nis_error status, const char *label)
{
syslog (LOG_ERR, "%s: %s", label, nis_sperrno (status));
}
+libnsl_hidden_nolink_def (nis_lerror, GLIBC_2_1)
char *
nis_sperror_r (const nis_error status, const char *label,
return buffer;
}
-libnsl_hidden_def (nis_sperror_r)
+libnsl_hidden_nolink_def (nis_sperror_r, GLIBC_2_1)
char *
nis_sperror (const nis_error status, const char *label)
return nis_sperror_r (status, label, buffer, sizeof (buffer));
}
+libnsl_hidden_nolink_def (nis_sperror, GLIBC_2_1)
return read_nis_obj (cold_start_file, (iofct_t) _xdr_directory_obj,
(freefct_t) nis_free_directory, sizeof (directory_obj));
}
-libnsl_hidden_def (readColdStartFile)
+libnsl_hidden_nolink_def (readColdStartFile, GLIBC_2_1)
bool_t
writeColdStartFile (const directory_obj *obj)
{
return write_nis_obj (cold_start_file, obj, (iofct_t) _xdr_directory_obj);
}
+libnsl_hidden_nolink_def (writeColdStartFile, GLIBC_2_1)
nis_object *
nis_read_obj (const char *name)
return read_nis_obj (name, (iofct_t) _xdr_nis_object,
(freefct_t) nis_free_object, sizeof (nis_object));
}
+libnsl_hidden_nolink_def (nis_read_obj, GLIBC_2_1)
bool_t
nis_write_obj (const char *name, const nis_object *obj)
{
return write_nis_obj (name, obj, (iofct_t) _xdr_nis_object);
}
+libnsl_hidden_nolink_def (nis_write_obj, GLIBC_2_1)
free (res);
}
}
-libnsl_hidden_def (__free_fdresult)
+libnsl_hidden_nolink_def (__free_fdresult, GLIBC_2_1)
void
nis_free_request (ib_request *ibreq)
free (ibreq);
}
}
-libnsl_hidden_def (nis_free_request)
+libnsl_hidden_nolink_def (nis_free_request, GLIBC_2_1)
void
nis_free_directory (directory_obj *obj)
free (obj);
}
}
-libnsl_hidden_def (nis_free_directory)
+libnsl_hidden_nolink_def (nis_free_directory, GLIBC_2_1)
void
nis_free_object (nis_object *obj)
free (obj);
}
}
-libnsl_hidden_def (nis_free_object)
+libnsl_hidden_nolink_def (nis_free_object, GLIBC_2_1)
void
nis_freeresult (nis_result *res)
free (res);
}
}
-libnsl_hidden_def (nis_freeresult)
+libnsl_hidden_nolink_def (nis_freeresult, GLIBC_2_1)
return serv;
}
+libnsl_hidden_nolink_def (nis_getservlist, GLIBC_2_1)
void
nis_freeservlist (nis_server **serv)
}
free (serv);
}
+libnsl_hidden_nolink_def (nis_freeservlist, GLIBC_2_1)
else
return FALSE;
}
+libnsl_hidden_nolink_def (nis_ismember, GLIBC_2_1)
return __nisgroup;
}
-libnsl_hidden_def (nis_local_group)
+libnsl_hidden_nolink_def (nis_local_group, GLIBC_2_1)
nis_name
nis_local_directory (void)
return __nisdomainname;
}
-libnsl_hidden_def (nis_local_directory)
+libnsl_hidden_nolink_def (nis_local_directory, GLIBC_2_1)
nis_name
nis_local_principal (void)
}
return __principal;
}
-libnsl_hidden_def (nis_local_principal)
+libnsl_hidden_nolink_def (nis_local_principal, GLIBC_2_1)
nis_name
nis_local_host (void)
return __nishostname;
}
-libnsl_hidden_def (nis_local_host)
+libnsl_hidden_nolink_def (nis_local_host, GLIBC_2_1)
return res;
}
-libnsl_hidden_def (nis_lookup)
+libnsl_hidden_nolink_def (nis_lookup, GLIBC_2_1)
return res;
}
+libnsl_hidden_nolink_def (nis_mkdir, GLIBC_2_1)
return res;
}
-libnsl_hidden_def (nis_modify)
+libnsl_hidden_nolink_def (nis_modify, GLIBC_2_1)
(caddr_t) NULL, 0, NULL);
nis_freeresult (res);
}
+libnsl_hidden_nolink_def (nis_ping, GLIBC_2_1)
}
fputs (result, stdout);
}
-libnsl_hidden_def (nis_print_rights)
+libnsl_hidden_nolink_def (nis_print_rights, GLIBC_2_1)
void
nis_print_directory (const directory_obj *dir)
}
}
}
-libnsl_hidden_def (nis_print_directory)
+libnsl_hidden_nolink_def (nis_print_directory, GLIBC_2_1)
void
nis_print_group (const group_obj *obj)
for (i = 0; i < obj->gr_members.gr_members_len; i++)
printf ("\t%s\n", obj->gr_members.gr_members_val[i]);
}
-libnsl_hidden_def (nis_print_group)
+libnsl_hidden_nolink_def (nis_print_group, GLIBC_2_1)
void
nis_print_table (const table_obj *obj)
fputc ('\n', stdout);
}
}
-libnsl_hidden_def (nis_print_table)
+libnsl_hidden_nolink_def (nis_print_table, GLIBC_2_1)
void
nis_print_link (const link_obj *obj)
printf (_("Linked to : %s\n"), obj->li_name);
/* XXX Print the attributes here, if they exists */
}
-libnsl_hidden_def (nis_print_link)
+libnsl_hidden_nolink_def (nis_print_link, GLIBC_2_1)
void
nis_print_entry (const entry_obj *obj)
obj->en_cols.en_cols_val[i].ec_value.ec_value_val);
}
}
-libnsl_hidden_def (nis_print_entry)
+libnsl_hidden_nolink_def (nis_print_entry, GLIBC_2_1)
void
nis_print_object (const nis_object * obj)
break;
}
}
-libnsl_hidden_def (nis_print_object)
+libnsl_hidden_nolink_def (nis_print_object, GLIBC_2_1)
void
nis_print_result (const nis_result *res)
nis_print_object (&res->objects.objects_val[i]);
}
}
+libnsl_hidden_nolink_def (nis_print_result, GLIBC_2_1)
nis_freeresult (res);
}
}
+libnsl_hidden_nolink_def (nis_print_group_entry, GLIBC_2_1)
return res;
}
-libnsl_hidden_def (nis_remove)
+libnsl_hidden_nolink_def (nis_remove, GLIBC_2_1)
else
return NIS_FAIL;
}
+libnsl_hidden_nolink_def (nis_removemember, GLIBC_2_1)
return res;
}
+libnsl_hidden_nolink_def (nis_rmdir, GLIBC_2_1)
return NIS_SUCCESS;
}
+libnsl_hidden_nolink_def (nis_servstate, GLIBC_2_1)
nis_error
nis_stats (const nis_server *serv, const nis_tag *tags,
return NIS_SUCCESS;
}
+libnsl_hidden_nolink_def (nis_stats, GLIBC_2_1)
void
nis_freetags (nis_tag *tags, const int numtags)
free (tags[i].tag_val);
free (tags);
}
+libnsl_hidden_nolink_def (nis_freetags, GLIBC_2_1)
return nis_leaf_of_r (name, result, NIS_MAXNAMELEN);
}
+libnsl_hidden_nolink_def (nis_leaf_of, GLIBC_2_1)
nis_name
nis_leaf_of_r (const_nis_name name, char *buffer, size_t buflen)
return buffer;
}
-libnsl_hidden_def (nis_leaf_of_r)
+libnsl_hidden_nolink_def (nis_leaf_of_r, GLIBC_2_1)
nis_name
nis_name_of (const_nis_name name)
return nis_name_of_r (name, result, NIS_MAXNAMELEN);
}
+libnsl_hidden_nolink_def (nis_name_of, GLIBC_2_1)
nis_name
nis_name_of_r (const_nis_name name, char *buffer, size_t buflen)
return buffer;
}
-libnsl_hidden_def (nis_name_of_r)
+libnsl_hidden_nolink_def (nis_name_of_r, GLIBC_2_1)
static int __always_inline
count_dots (const_nis_name str)
return getnames;
}
-libnsl_hidden_def (nis_getnames)
+libnsl_hidden_nolink_def (nis_getnames, GLIBC_2_1)
void
nis_freenames (nis_name *names)
free (names);
}
-libnsl_hidden_def (nis_freenames)
+libnsl_hidden_nolink_def (nis_freenames, GLIBC_2_1)
name_pos
nis_dir_cmp (const_nis_name n1, const_nis_name n2)
}
}
-libnsl_hidden_def (nis_dir_cmp)
+libnsl_hidden_nolink_def (nis_dir_cmp, GLIBC_2_1)
void
nis_destroy_object (nis_object *obj)
{
nis_free_object (obj);
}
-libnsl_hidden_def (nis_destroy_object)
+libnsl_hidden_nolink_def (nis_destroy_object, GLIBC_2_1)
return ibreq;
}
-libnsl_hidden_def (__create_ib_request)
+libnsl_hidden_nolink_def (__create_ib_request, GLIBC_PRIVATE)
static const struct timeval RPCTIMEOUT = {10, 0};
return NIS_SUCCESS;
}
-libnsl_hidden_def (__follow_path)
+libnsl_hidden_nolink_def (__follow_path, GLIBC_PRIVATE)
nis_result *
return res;
}
-libnsl_hidden_def (nis_list)
+libnsl_hidden_nolink_def (nis_list, GLIBC_2_1)
nis_result *
nis_add_entry (const_nis_name name, const nis_object *obj2, unsigned int flags)
return res;
}
+libnsl_hidden_nolink_def (nis_add_entry, GLIBC_2_1)
nis_result *
nis_modify_entry (const_nis_name name, const nis_object *obj2,
return res;
}
+libnsl_hidden_nolink_def (nis_modify_entry, GLIBC_2_1)
nis_result *
nis_remove_entry (const_nis_name name, const nis_object *obj,
return res;
}
+libnsl_hidden_nolink_def (nis_remove_entry, GLIBC_2_1)
nis_result *
nis_first_entry (const_nis_name name)
return res;
}
+libnsl_hidden_nolink_def (nis_first_entry, GLIBC_2_1)
nis_result *
nis_next_entry (const_nis_name name, const netobj *cookie)
return res;
}
+libnsl_hidden_nolink_def (nis_next_entry, GLIBC_2_1)
return fd_res;
}
-libnsl_hidden_def (__nis_finddirectory)
+libnsl_hidden_nolink_def (__nis_finddirectory, GLIBC_2_1)
/* The hash implementation is in a separate file. */
#include "nis_hash.c"
else
return NIS_FAIL;
}
+libnsl_hidden_nolink_def (nis_verifygroup, GLIBC_2_1)
}
return res;
}
-libnsl_hidden_def (_xdr_nis_result)
+libnsl_hidden_nolink_def (_xdr_nis_result, GLIBC_PRIVATE)
bool_t
_xdr_ns_request (XDR *xdrs, ns_request *objp)
}
return res;
}
-libnsl_hidden_def (_xdr_ib_request)
+libnsl_hidden_nolink_def (_xdr_ib_request, GLIBC_PRIVATE)
bool_t
_xdr_ping_args (XDR *xdrs, ping_args *objp)
return xdr_pointer (xdrs, (char **)objp, sizeof (nis_object),
(xdrproc_t)_xdr_nis_object);
}
-libnsl_hidden_def (xdr_obj_p)
+libnsl_hidden_nolink_def (xdr_obj_p, GLIBC_2_1)
bool_t
xdr_cback_data (XDR *xdrs, cback_data *objp)
&objp->entries.entries_len, ~0,
sizeof (obj_p), (xdrproc_t) xdr_obj_p);
}
-libnsl_hidden_def (xdr_cback_data)
+libnsl_hidden_nolink_def (xdr_cback_data, GLIBC_2_1)
{
return xdr_enum (xdrs, (enum_t *) objp);
}
-libnsl_hidden_def (xdr_ypstat)
+libnsl_hidden_nolink_def (xdr_ypstat, GLIBC_2_0)
bool_t
xdr_ypxfrstat (XDR *xdrs, ypxfrstat *objp)
{
return xdr_enum (xdrs, (enum_t *) objp);
}
-libnsl_hidden_def (xdr_ypxfrstat)
+libnsl_hidden_nolink_def (xdr_ypxfrstat, GLIBC_2_0)
bool_t
xdr_domainname (XDR *xdrs, domainname *objp)
{
return xdr_string (xdrs, objp, XDRMAXNAME);
}
-libnsl_hidden_def (xdr_domainname)
+libnsl_hidden_nolink_def (xdr_domainname, GLIBC_2_0)
bool_t
xdr_mapname (XDR *xdrs, mapname *objp)
{
return xdr_string (xdrs, objp, XDRMAXNAME);
}
-libnsl_hidden_def (xdr_mapname)
+libnsl_hidden_nolink_def (xdr_mapname, GLIBC_2_0)
bool_t
xdr_peername (XDR *xdrs, peername *objp)
{
return xdr_string (xdrs, objp, XDRMAXNAME);
}
-libnsl_hidden_def (xdr_peername)
+libnsl_hidden_nolink_def (xdr_peername, GLIBC_2_0)
bool_t
xdr_keydat (XDR *xdrs, keydat *objp)
return xdr_bytes (xdrs, (char **) &objp->keydat_val,
(u_int *) &objp->keydat_len, XDRMAXRECORD);
}
-libnsl_hidden_def (xdr_keydat)
+libnsl_hidden_nolink_def (xdr_keydat, GLIBC_2_0)
bool_t
xdr_valdat (XDR *xdrs, valdat *objp)
return xdr_bytes (xdrs, (char **) &objp->valdat_val,
(u_int *) &objp->valdat_len, XDRMAXRECORD);
}
-libnsl_hidden_def (xdr_valdat)
+libnsl_hidden_nolink_def (xdr_valdat, GLIBC_2_0)
bool_t
xdr_ypmap_parms (XDR *xdrs, ypmap_parms *objp)
return FALSE;
return xdr_peername (xdrs, &objp->peer);
}
-libnsl_hidden_def (xdr_ypmap_parms)
+libnsl_hidden_nolink_def (xdr_ypmap_parms, GLIBC_2_0)
bool_t
xdr_ypreq_key (XDR *xdrs, ypreq_key *objp)
return FALSE;
return xdr_keydat (xdrs, &objp->key);
}
-libnsl_hidden_def (xdr_ypreq_key)
+libnsl_hidden_nolink_def (xdr_ypreq_key, GLIBC_2_0)
bool_t
xdr_ypreq_nokey (XDR *xdrs, ypreq_nokey *objp)
return FALSE;
return xdr_mapname (xdrs, &objp->map);
}
-libnsl_hidden_def (xdr_ypreq_nokey)
+libnsl_hidden_nolink_def (xdr_ypreq_nokey, GLIBC_2_0)
bool_t
xdr_ypreq_xfr (XDR *xdrs, ypreq_xfr *objp)
return FALSE;
return xdr_u_int (xdrs, &objp->port);
}
+libnsl_hidden_nolink_def (xdr_ypreq_xfr, GLIBC_2_0)
bool_t
xdr_ypresp_val (XDR *xdrs, ypresp_val *objp)
return FALSE;
return xdr_valdat (xdrs, &objp->val);
}
-libnsl_hidden_def (xdr_ypresp_val)
+libnsl_hidden_nolink_def (xdr_ypresp_val, GLIBC_2_0)
bool_t
xdr_ypresp_key_val (XDR *xdrs, ypresp_key_val *objp)
return FALSE;
return xdr_keydat (xdrs, &objp->key);
}
-libnsl_hidden_def (xdr_ypresp_key_val)
+libnsl_hidden_nolink_def (xdr_ypresp_key_val, GLIBC_2_0)
bool_t
xdr_ypresp_master (XDR *xdrs, ypresp_master *objp)
return FALSE;
return xdr_peername (xdrs, &objp->peer);
}
-libnsl_hidden_def (xdr_ypresp_master)
+libnsl_hidden_nolink_def (xdr_ypresp_master, GLIBC_2_0)
bool_t
xdr_ypresp_order (XDR *xdrs, ypresp_order *objp)
return FALSE;
return xdr_u_int (xdrs, &objp->ordernum);
}
-libnsl_hidden_def (xdr_ypresp_order)
+libnsl_hidden_nolink_def (xdr_ypresp_order, GLIBC_2_0)
bool_t
xdr_ypresp_all (XDR *xdrs, ypresp_all *objp)
}
return TRUE;
}
-libnsl_hidden_def (xdr_ypresp_all)
+libnsl_hidden_nolink_def (xdr_ypresp_all, GLIBC_2_0)
bool_t
xdr_ypresp_xfr (XDR *xdrs, ypresp_xfr *objp)
return FALSE;
return xdr_ypxfrstat (xdrs, &objp->xfrstat);
}
+libnsl_hidden_nolink_def (xdr_ypresp_xfr, GLIBC_2_0)
bool_t
xdr_ypmaplist (XDR *xdrs, ypmaplist *objp)
char **tp = (void *) &objp->next;
return xdr_pointer (xdrs, tp, sizeof (ypmaplist), (xdrproc_t) xdr_ypmaplist);
}
-libnsl_hidden_def (xdr_ypmaplist)
+libnsl_hidden_nolink_def (xdr_ypmaplist, GLIBC_2_0)
bool_t
xdr_ypresp_maplist (XDR *xdrs, ypresp_maplist *objp)
char **tp = (void *) &objp->maps;
return xdr_pointer (xdrs, tp, sizeof (ypmaplist), (xdrproc_t) xdr_ypmaplist);
}
-libnsl_hidden_def (xdr_ypresp_maplist)
+libnsl_hidden_nolink_def (xdr_ypresp_maplist, GLIBC_2_0)
bool_t
xdr_yppush_status (XDR *xdrs, yppush_status *objp)
{
return xdr_enum (xdrs, (enum_t *) objp);
}
-libnsl_hidden_def (xdr_yppush_status)
+libnsl_hidden_nolink_def (xdr_yppush_status, GLIBC_2_0)
bool_t
xdr_yppushresp_xfr (XDR *xdrs, yppushresp_xfr *objp)
return FALSE;
return xdr_yppush_status (xdrs, &objp->status);
}
+libnsl_hidden_nolink_def (xdr_yppushresp_xfr, GLIBC_2_0)
bool_t
xdr_ypbind_resptype (XDR *xdrs, ypbind_resptype *objp)
{
return xdr_enum (xdrs, (enum_t *) objp);
}
-libnsl_hidden_def (xdr_ypbind_resptype)
+libnsl_hidden_nolink_def (xdr_ypbind_resptype, GLIBC_2_0)
bool_t
xdr_ypbind_binding (XDR *xdrs, ypbind_binding *objp)
return FALSE;
return xdr_opaque (xdrs, objp->ypbind_binding_port, 2);
}
-libnsl_hidden_def (xdr_ypbind_binding)
+libnsl_hidden_nolink_def (xdr_ypbind_binding, GLIBC_2_0)
bool_t
xdr_ypbind_resp (XDR *xdrs, ypbind_resp *objp)
}
return FALSE;
}
-libnsl_hidden_def (xdr_ypbind_resp)
+libnsl_hidden_nolink_def (xdr_ypbind_resp, GLIBC_2_0)
bool_t
xdr_ypbind_setdom (XDR *xdrs, ypbind_setdom *objp)
return FALSE;
return xdr_u_int (xdrs, &objp->ypsetdom_vers);
}
+libnsl_hidden_nolink_def (xdr_ypbind_setdom, GLIBC_2_0)
bool_t
xdr_ypall(XDR *xdrs, struct ypall_callback *incallback)
return FALSE;
}
}
+/* XXX libnsl_hidden_nolink_def(xdr_ypall, GLIBC_2_2) */
return status;
}
-libnsl_hidden_def (yp_bind)
+libnsl_hidden_nolink_def (yp_bind, GLIBC_2_0)
static void
yp_unbind_locked (const char *indomain)
return;
}
+libnsl_hidden_nolink_def(yp_unbind, GLIBC_2_0)
static int
__ypclnt_call (const char *domain, u_long prog, xdrproc_t xargs,
return result;
}
-libnsl_hidden_def (yp_get_default_domain)
+libnsl_hidden_nolink_def (yp_get_default_domain, GLIBC_2_0)
int
__yp_check (char **domain)
return 1;
return 0;
}
+libnsl_hidden_nolink_def(__yp_check, GLIBC_2_0)
int
yp_match (const char *indomain, const char *inmap, const char *inkey,
return status;
}
+libnsl_hidden_nolink_def(yp_match, GLIBC_2_0)
int
yp_first (const char *indomain, const char *inmap, char **outkey,
return status;
}
+libnsl_hidden_nolink_def(yp_first, GLIBC_2_0)
int
yp_next (const char *indomain, const char *inmap, const char *inkey,
return status;
}
+libnsl_hidden_nolink_def(yp_next, GLIBC_2_0)
int
yp_master (const char *indomain, const char *inmap, char **outname)
return *outname == NULL ? YPERR_YPERR : YPERR_SUCCESS;
}
-libnsl_hidden_def (yp_master)
+libnsl_hidden_nolink_def (yp_master, GLIBC_2_0)
int
yp_order (const char *indomain, const char *inmap, unsigned int *outorder)
return result;
}
+libnsl_hidden_nolink_def(yp_order, GLIBC_2_0)
struct ypresp_all_data
{
return res;
}
+libnsl_hidden_nolink_def (yp_all, GLIBC_2_0)
int
-
yp_maplist (const char *indomain, struct ypmaplist **outmaplist)
{
struct ypresp_maplist resp;
}
return _(str);
}
+libnsl_hidden_nolink_def(yperr_string, GLIBC_2_0)
static const int8_t yp_2_yperr[] =
{
return YPERR_YPERR;
return yp_2_yperr[code - YP_VERS];
}
-libnsl_hidden_def (ypprot_err)
+libnsl_hidden_nolink_def (ypprot_err, GLIBC_2_0)
const char *
ypbinderr_string (const int error)
}
return _(str);
}
-libnsl_hidden_def (ypbinderr_string)
+libnsl_hidden_nolink_def (ypbinderr_string, GLIBC_2_0)
#define WINDOW 60
}
return res;
}
+libnsl_hidden_nolink_def(yp_update, GLIBC_2_0)
return xdr_bytes (xdrs, (char **) &objp->yp_buf_val,
(u_int *) &objp->yp_buf_len, ~0);
}
-libnsl_hidden_def (xdr_yp_buf)
+libnsl_hidden_nolink_def (xdr_yp_buf, GLIBC_2_0)
bool_t
xdr_ypupdate_args (XDR *xdrs, ypupdate_args *objp)
return FALSE;
return xdr_yp_buf (xdrs, &objp->datum);
}
-libnsl_hidden_def (xdr_ypupdate_args)
+libnsl_hidden_nolink_def (xdr_ypupdate_args, GLIBC_2_0)
bool_t
xdr_ypdelete_args (XDR *xdrs, ypdelete_args *objp)
return FALSE;
return xdr_yp_buf (xdrs, &objp->key);
}
-libnsl_hidden_def (xdr_ypdelete_args)
+libnsl_hidden_nolink_def (xdr_ypdelete_args, GLIBC_2_0)