diff options
| author | Ulrich Drepper <drepper@gmail.com> | 2011-04-16 21:59:36 -0400 |
|---|---|---|
| committer | Ulrich Drepper <drepper@gmail.com> | 2011-04-16 21:59:36 -0400 |
| commit | 7b57bfe5988e476ea40934457dfd1c8a231e2391 (patch) | |
| tree | 33dbec2b9a1a8fd8472a214945090f31d5372a8e /sunrpc | |
| parent | e6c61494125126d2ba77e5d99f83887a2ed49783 (diff) | |
| download | glibc-7b57bfe5988e476ea40934457dfd1c8a231e2391.tar.xz glibc-7b57bfe5988e476ea40934457dfd1c8a231e2391.zip | |
Obsolete RPC implementation in libc.
Diffstat (limited to 'sunrpc')
52 files changed, 730 insertions, 452 deletions
diff --git a/sunrpc/Makefile b/sunrpc/Makefile index 30f74dc135..f067e92398 100644 --- a/sunrpc/Makefile +++ b/sunrpc/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 1994-2004, 2005, 2006 Free Software Foundation, Inc. +# Copyright (C) 1994-2004, 2005, 2006, 2011 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -47,44 +47,52 @@ subdir := sunrpc rpcsvc = bootparam_prot.x nlm_prot.x rstat.x \ yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \ rusers.x spray.x nfs_prot.x rquota.x key_prot.x -headers = $(addprefix rpc/,auth.h auth_unix.h clnt.h netdb.h pmap_clnt.h \ - pmap_prot.h pmap_rmt.h rpc.h rpc_msg.h svc.h \ - svc_auth.h types.h xdr.h auth_des.h \ - des_crypt.h key_prot.h rpc_des.h) \ - $(rpcsvc:%=rpcsvc/%) rpcsvc/bootparam.h +headers_in_tirpc = $(addprefix rpc/,auth.h auth_unix.h clnt.h pmap_clnt.h \ + pmap_prot.h pmap_rmt.h rpc.h rpc_msg.h \ + svc.h svc_auth.h types.h xdr.h auth_des.h \ + des_crypt.h) +headers_not_in_tirpc = $(addprefix rpc/,netdb.h key_prot.h rpc_des.h) \ + $(rpcsvc:%=rpcsvc/%) rpcsvc/bootparam.h install-others = $(inst_sysconfdir)/rpc generated = $(rpcsvc:%.x=rpcsvc/%.h) $(rpcsvc:%.x=x%.c) $(rpcsvc:%.x=x%.stmp) \ $(rpcsvc:%.x=rpcsvc/%.stmp) rpcgen generated-dirs := rpcsvc -routines := auth_none auth_unix authuxprot bindrsvprt \ - clnt_gen clnt_perr clnt_raw clnt_simp clnt_tcp \ - clnt_udp rpc_dtable get_myaddr getrpcport \ - pmap_clnt pm_getmaps pm_getport pmap_prot \ - pmap_prot2 pmap_rmt rpc_prot rpc_common rpc_cmsg rpc_thread \ - svc svc_auth svc_authux svc_raw svc_run svc_simple \ - svc_tcp svc_udp xdr xdr_array xdr_float xdr_mem \ - xdr_rec xdr_ref xdr_stdio publickey xdr_sizeof \ - auth_des authdes_prot des_crypt des_impl des_soft \ - key_call key_prot netname openchild rtime svcauth_des xcrypt\ - clnt_unix svc_unix create_xid xdr_intXX_t - -others := rpcinfo +include ../Makeconfig + +ifeq ($(versioning),yes) +need-export-routines := auth_des auth_unix clnt_gen clnt_perr clnt_tcp \ + clnt_udp get_myaddr key_call netname pm_getport \ + rpc_thread svc svc_tcp svc_udp xcrypt xdr_array xdr \ + xdr_intXX_t xdr_mem xdr_ref xdr_sizeof xdr_stdio + +routines := auth_none authuxprot bindrsvprt clnt_raw clnt_simp \ + rpc_dtable getrpcport pmap_clnt pm_getmaps pmap_prot pmap_prot2 \ + pmap_rmt rpc_prot rpc_common rpc_cmsg svc_auth svc_authux svc_raw \ + svc_run svc_simple xdr_float xdr_rec publickey authdes_prot \ + des_crypt des_impl des_soft key_prot openchild rtime svcauth_des \ + clnt_unix svc_unix create_xid $(need-export-routines) +# We only add the RPC for compatibility to libc.so. +shared-only-routines = $(routines) +endif + +# We do not build rpcinfo anymore. It is not needed for a bootstrap +# and not wanted on complete systems. +# others := rpcinfo +# install-sbin := rpcinfo install-bin := rpcgen -install-sbin := rpcinfo rpcgen-objs = rpc_main.o rpc_hout.o rpc_cout.o rpc_parse.o \ rpc_scan.o rpc_util.o rpc_svcout.o rpc_clntout.o \ rpc_tblout.o rpc_sample.o # These headers are part of rpcgen. distribute := proto.h rpc_util.h rpc_parse.h rpc_scan.h \ + $(headers_in_tirpc) $(headers_not_in_tirpc) \ $(rpcgen-objs:.o=.c) etc.rpc \ errqueue.h extra-objs = $(rpcgen-objs) all: # Make this the default target; it will be defined in Rules. -include ../Makeconfig - tests = tst-xdrmem tst-xdrmem2 xtests := tst-getmyaddr @@ -108,6 +116,17 @@ librpcsvc-inhibit-o = .os # Build no shared rpcsvc library. omit-deps = $(librpcsvc-routines) endif +ifeq (yes,$(build-shared)) +rpc-compat-routines = $(addprefix compat-,$(need-export-routines)) +rpc-compat-routines.os = $(addprefix $(objpfx), \ + $(addsuffix .os,$(rpc-compat-routines))) +subdir_lib: $(objpfx)librpc_compat_pic.a +$(objpfx)librpc_compat_pic.a: $(rpc-compat-routines.os) + $(AR) cr$(verbose) $@ $^ +$(rpc-compat-routines.os): $(objpfx)compat-%.os: %.c + $(compile-command.c) -DEXPORT_RPC_SYMBOLS +endif + CFLAGS-xbootparam_prot.c = -Wno-unused $(PIC-ccflag) CFLAGS-xnlm_prot.c = -Wno-unused $(PIC-ccflag) CFLAGS-xrstat.c = -Wno-unused $(PIC-ccflag) @@ -131,6 +150,10 @@ CPPFLAGS += -D_RPC_THREAD_SAFE_ include ../Rules +$(objpfx)tst-getmyaddr: $(common-objpfx)linkobj/libc.so +$(objpfx)tst-xdrmem: $(common-objpfx)linkobj/libc.so +$(objpfx)tst-xdrmem2: $(common-objpfx)linkobj/libc.so + $(objpfx)rpcgen: $(addprefix $(objpfx),$(rpcgen-objs)) \ $(sort $(filter $(common-objpfx)libc%,$(link-libc))) \ $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) diff --git a/sunrpc/auth_des.c b/sunrpc/auth_des.c index 0228562b89..96bbcfc328 100644 --- a/sunrpc/auth_des.c +++ b/sunrpc/auth_des.c @@ -51,8 +51,6 @@ #define debug(msg) /* printf("%s\n", msg) */ -extern bool_t INTUSE(xdr_authdes_cred) (XDR *, struct authdes_cred *); -extern bool_t INTUSE(xdr_authdes_verf) (XDR *, struct authdes_verf *); /* * DES authenticator operations vector @@ -79,8 +77,8 @@ static const struct auth_ops authdes_ops = { */ struct ad_private { char *ad_fullname; /* client's full name */ - u_int ad_fullnamelen; /* length of name, rounded up */ - char *ad_servername; /* server's full name */ + u_int ad_fullnamelen; /* length of name, rounded up */ + char *ad_servername; /* server's full name */ u_int ad_servernamelen; /* length of name, rounded up */ uint32_t ad_window; /* client specified window */ bool_t ad_dosync; /* synchronize? */ @@ -91,7 +89,7 @@ struct ad_private { struct authdes_verf ad_verf; /* storage for verifier */ struct rpc_timeval ad_timestamp; /* timestamp sent */ des_block ad_xkey; /* encrypted conversation key */ - u_char ad_pkey[1024]; /* Servers actual public key */ + u_char ad_pkey[1024]; /* Servers actual public key */ }; @@ -114,8 +112,13 @@ authdes_create (const char *servername, u_int window, pkey.n_bytes = pkey_data; pkey.n_len = strlen (pkey_data) + 1; - return INTUSE(authdes_pk_create) (servername, &pkey, window, syncaddr, ckey); + return authdes_pk_create (servername, &pkey, window, syncaddr, ckey); } +#ifdef EXPORT_RPC_SYMBOLS +libc_hidden_def (authdes_create) +#else +libc_hidden_nolink (authdes_create, GLIBC_2_1) +#endif AUTH * authdes_pk_create (const char *servername, netobj *pkey, u_int window, @@ -205,7 +208,11 @@ failed: } return NULL; } -INTDEF(authdes_pk_create) +#ifdef EXPORT_RPC_SYMBOLS +libc_hidden_def (authdes_pk_create) +#else +libc_hidden_nolink (authdes_pk_create, GLIBC_2_1) +#endif /* * Implement the five authentication operations @@ -309,7 +316,7 @@ authdes_marshal (AUTH *auth, XDR *xdrs) ATTEMPT (xdr_putint32 (xdrs, &auth->ah_cred.oa_flavor)); ATTEMPT (xdr_putint32 (xdrs, &len)); } - ATTEMPT (INTUSE(xdr_authdes_cred) (xdrs, cred)); + ATTEMPT (xdr_authdes_cred (xdrs, cred)); len = (2 + 1) * BYTES_PER_XDR_UNIT; if ((ixdr = xdr_inline (xdrs, 2 * BYTES_PER_XDR_UNIT)) != NULL) @@ -322,7 +329,7 @@ authdes_marshal (AUTH *auth, XDR *xdrs) ATTEMPT (xdr_putint32 (xdrs, &auth->ah_verf.oa_flavor)); ATTEMPT (xdr_putint32 (xdrs, &len)); } - ATTEMPT (INTUSE(xdr_authdes_verf) (xdrs, verf)); + ATTEMPT (xdr_authdes_verf (xdrs, verf)); return TRUE; } diff --git a/sunrpc/auth_none.c b/sunrpc/auth_none.c index 57b3418c51..5f252a9544 100644 --- a/sunrpc/auth_none.c +++ b/sunrpc/auth_none.c @@ -81,10 +81,10 @@ authnone_create_once (void) ap->no_client.ah_cred = ap->no_client.ah_verf = _null_auth; ap->no_client.ah_ops = (struct auth_ops *) &ops; xdrs = &xdr_stream; - INTUSE(xdrmem_create) (xdrs, ap->marshalled_client, - (u_int) MAX_MARSHAL_SIZE, XDR_ENCODE); - (void) INTUSE(xdr_opaque_auth) (xdrs, &ap->no_client.ah_cred); - (void) INTUSE(xdr_opaque_auth) (xdrs, &ap->no_client.ah_verf); + xdrmem_create (xdrs, ap->marshalled_client, + (u_int) MAX_MARSHAL_SIZE, XDR_ENCODE); + (void) xdr_opaque_auth (xdrs, &ap->no_client.ah_cred); + (void) xdr_opaque_auth (xdrs, &ap->no_client.ah_verf); ap->mcnt = XDR_GETPOS (xdrs); XDR_DESTROY (xdrs); } @@ -95,7 +95,7 @@ authnone_create (void) __libc_once (authnone_private_guard, authnone_create_once); return &authnone_private.no_client; } -INTDEF (authnone_create) +libc_hidden_nolink (authnone_create, GLIBC_2_0) static bool_t authnone_marshal (AUTH *client, XDR *xdrs) diff --git a/sunrpc/auth_unix.c b/sunrpc/auth_unix.c index 301055bf16..858523eb8d 100644 --- a/sunrpc/auth_unix.c +++ b/sunrpc/auth_unix.c @@ -134,8 +134,8 @@ no_memory: /* * Serialize the parameters into origcred */ - INTUSE(xdrmem_create) (&xdrs, mymem, MAX_AUTH_BYTES, XDR_ENCODE); - if (!INTUSE(xdr_authunix_parms) (&xdrs, &aup)) + xdrmem_create (&xdrs, mymem, MAX_AUTH_BYTES, XDR_ENCODE); + if (!xdr_authunix_parms (&xdrs, &aup)) abort (); au->au_origcred.oa_length = len = XDR_GETPOS (&xdrs); au->au_origcred.oa_flavor = AUTH_UNIX; @@ -151,7 +151,7 @@ no_memory: marshal_new_auth (auth); return auth; } -INTDEF (authunix_create) +libc_hidden_nolink (authunix_create, GLIBC_2_0) /* * Returns an auth handle with parameters determined by doing lots of @@ -208,15 +208,18 @@ authunix_create_default (void) /* This braindamaged Sun code forces us here to truncate the list of groups to NGRPS members since the code in authuxprot.c transforms a fixed array. Grrr. */ - AUTH *result = INTUSE(authunix_create) (machname, uid, gid, MIN (NGRPS, len), - gids); + AUTH *result = authunix_create (machname, uid, gid, MIN (NGRPS, len), gids); if (max_nr_groups >= ALLOCA_LIMIT || retry) free (gids); return result; } -INTDEF (authunix_create_default) +#ifdef EXPORT_RPC_SYMBOLS +libc_hidden_def (authunix_create_default) +#else +libc_hidden_nolink (authunix_create_default, GLIBC_2_0) +#endif /* * authunix operations @@ -245,8 +248,7 @@ authunix_validate (AUTH *auth, struct opaque_auth *verf) if (verf->oa_flavor == AUTH_SHORT) { au = AUTH_PRIVATE (auth); - INTUSE(xdrmem_create) (&xdrs, verf->oa_base, verf->oa_length, - XDR_DECODE); + xdrmem_create (&xdrs, verf->oa_base, verf->oa_length, XDR_DECODE); if (au->au_shcred.oa_base != NULL) { @@ -254,14 +256,14 @@ authunix_validate (AUTH *auth, struct opaque_auth *verf) au->au_shcred.oa_length); au->au_shcred.oa_base = NULL; } - if (INTUSE(xdr_opaque_auth) (&xdrs, &au->au_shcred)) + if (xdr_opaque_auth (&xdrs, &au->au_shcred)) { auth->ah_cred = au->au_shcred; } else { xdrs.x_op = XDR_FREE; - (void) INTUSE(xdr_opaque_auth) (&xdrs, &au->au_shcred); + (void) xdr_opaque_auth (&xdrs, &au->au_shcred); au->au_shcred.oa_base = NULL; auth->ah_cred = au->au_origcred; } @@ -289,9 +291,9 @@ authunix_refresh (AUTH *auth) /* first deserialize the creds back into a struct authunix_parms */ aup.aup_machname = NULL; aup.aup_gids = (gid_t *) NULL; - INTUSE(xdrmem_create) (&xdrs, au->au_origcred.oa_base, - au->au_origcred.oa_length, XDR_DECODE); - stat = INTUSE(xdr_authunix_parms) (&xdrs, &aup); + xdrmem_create (&xdrs, au->au_origcred.oa_base, + au->au_origcred.oa_length, XDR_DECODE); + stat = xdr_authunix_parms (&xdrs, &aup); if (!stat) goto done; |
