summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2017-03-20 18:10:36 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2017-03-20 18:10:36 +0100
commita1a8064169aeda79e3266a2db9cce25e361a86dc (patch)
tree526902649b5dfb9e1e9f6c632349df475a6bb597
parent2d8ea0524b016d29cf28615449b22b96dd5067b2 (diff)
remove RPC implementation
The included RPC implementation is ipv4 only. Other C library projects have either deprecated the internal RPC implementation (GNU C Library) or never implemented such functionality (musl C Library). The latest rpcbind release (0.2.4) checks for libtirpc and does not allow to be build with uClibc-ng RPC without patching. The common use case for RPC nowadays is to use rpcbind together with nfs-utils to provide NFS server or client support to a system. The included RPC implementation does create issues with duplicate symbol failures when statically compiling with RPC enabled.
-rw-r--r--Makefile.in6
-rw-r--r--extra/Configs/Config.in30
-rw-r--r--include/netdb.h5
-rw-r--r--include/protocols/timed.h3
-rw-r--r--include/rpc/auth.h225
-rw-r--r--include/rpc/auth_des.h115
-rw-r--r--include/rpc/auth_unix.h91
-rw-r--r--include/rpc/clnt.h433
-rw-r--r--include/rpc/des_crypt.h97
-rw-r--r--include/rpc/key_prot.h346
-rw-r--r--include/rpc/netdb.h79
-rw-r--r--include/rpc/pmap_clnt.h101
-rw-r--r--include/rpc/pmap_prot.h110
-rw-r--r--include/rpc/pmap_rmt.h71
-rw-r--r--include/rpc/rpc.h101
-rw-r--r--include/rpc/rpc_des.h72
-rw-r--r--include/rpc/rpc_msg.h226
-rw-r--r--include/rpc/svc.h330
-rw-r--r--include/rpc/svc_auth.h55
-rw-r--r--include/rpc/types.h95
-rw-r--r--include/rpc/xdr.h405
-rw-r--r--libc/inet/Makefile.in2
-rw-r--r--libc/inet/rpc/.indent.pro33
-rw-r--r--libc/inet/rpc/Makefile13
-rw-r--r--libc/inet/rpc/Makefile.in42
-rw-r--r--libc/inet/rpc/auth_none.c140
-rw-r--r--libc/inet/rpc/auth_unix.c323
-rw-r--r--libc/inet/rpc/authunix_prot.c67
-rw-r--r--libc/inet/rpc/bindresvport.c87
-rw-r--r--libc/inet/rpc/clnt_generic.c176
-rw-r--r--libc/inet/rpc/clnt_perror.c411
-rw-r--r--libc/inet/rpc/clnt_raw.c247
-rw-r--r--libc/inet/rpc/clnt_simple.c161
-rw-r--r--libc/inet/rpc/clnt_tcp.c518
-rw-r--r--libc/inet/rpc/clnt_udp.c600
-rw-r--r--libc/inet/rpc/clnt_unix.c586
-rw-r--r--libc/inet/rpc/create_xid.c53
-rw-r--r--libc/inet/rpc/errqueue.h45
-rw-r--r--libc/inet/rpc/get_myaddress.c109
-rw-r--r--libc/inet/rpc/getrpcent.c345
-rw-r--r--libc/inet/rpc/getrpcport.c75
-rw-r--r--libc/inet/rpc/pm_getmaps.c84
-rw-r--r--libc/inet/rpc/pm_getport.c106
-rw-r--r--libc/inet/rpc/pmap_clnt.c173
-rw-r--r--libc/inet/rpc/pmap_prot.c56
-rw-r--r--libc/inet/rpc/pmap_prot2.c117
-rw-r--r--libc/inet/rpc/pmap_rmt.c404
-rw-r--r--libc/inet/rpc/rcmd.c692
-rw-r--r--libc/inet/rpc/rexec.c193
-rw-r--r--libc/inet/rpc/rpc_cmsg.c205
-rw-r--r--libc/inet/rpc/rpc_commondata.c47
-rw-r--r--libc/inet/rpc/rpc_dtablesize.c52
-rw-r--r--libc/inet/rpc/rpc_private.h55
-rw-r--r--libc/inet/rpc/rpc_prot.c282
-rw-r--r--libc/inet/rpc/rpc_thread.c163
-rw-r--r--libc/inet/rpc/rtime.c149
-rw-r--r--libc/inet/rpc/ruserpass.c323
-rw-r--r--libc/inet/rpc/sa_len.c64
-rw-r--r--libc/inet/rpc/svc.c505
-rw-r--r--libc/inet/rpc/svc_auth.c124
-rw-r--r--libc/inet/rpc/svc_authux.c156
-rw-r--r--libc/inet/rpc/svc_raw.c164
-rw-r--r--libc/inet/rpc/svc_run.c87
-rw-r--r--libc/inet/rpc/svc_simple.c177
-rw-r--r--libc/inet/rpc/svc_tcp.c407
-rw-r--r--libc/inet/rpc/svc_udp.c567
-rw-r--r--libc/inet/rpc/svc_unix.c517
-rw-r--r--libc/inet/rpc/xdr.c726
-rw-r--r--libc/inet/rpc/xdr_array.c156
-rw-r--r--libc/inet/rpc/xdr_float.c131
-rw-r--r--libc/inet/rpc/xdr_intXX_t.c204
-rw-r--r--libc/inet/rpc/xdr_mem.c235
-rw-r--r--libc/inet/rpc/xdr_rec.c628
-rw-r--r--libc/inet/rpc/xdr_reference.c131
-rw-r--r--libc/inet/rpc/xdr_stdio.c184
-rw-r--r--libpthread/linuxthreads/cancel.c10
-rw-r--r--libpthread/linuxthreads/specific.c30
77 files changed, 1 insertions, 15332 deletions
diff --git a/Makefile.in b/Makefile.in
index bb3549c19..0051199d6 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -254,10 +254,7 @@ HEADERS_RM- := \
bits/stackinfo.h \
atomic.h \
bits/atomic.h \
- tls.h \
- rpc/des_crypt.h \
- rpc/key_prot.h \
- rpc/rpc_des.h
+ tls.h
ifeq ($(UCLIBC_STRICT_HEADERS),y)
HEADERS_RM- += sgtty.h
endif
@@ -288,7 +285,6 @@ HEADERS_RM-$(UCLIBC_HAS_REALTIME) += mqueue.h bits/mqueue.h sched.h \
bits/sched.h \
semaphore.h
HEADERS_RM-$(UCLIBC_HAS_REGEX) += regex.h regexp.h
-HEADERS_RM-$(UCLIBC_HAS_RPC) += rpc
HEADERS_RM-$(UCLIBC_HAS_SHADOW) += shadow.h
HEADERS_RM-$(UCLIBC_HAS_SOCKET) += sys/socket.h bits/socket.h sys/socketvar.h bits/socket_type.h
HEADERS_RM-$(UCLIBC_HAS_SYSLOG) += syslog.h sys/syslog.h bits/syslog*.h
diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in
index 850bd7d13..b329f88b7 100644
--- a/extra/Configs/Config.in
+++ b/extra/Configs/Config.in
@@ -1250,36 +1250,6 @@ config UCLIBC_HAS_IPV6
Most people should answer N.
-config UCLIBC_HAS_RPC
- bool "Remote Procedure Call (RPC) support"
- # RPC+socket-ipvX doesn't currently work.
- depends on UCLIBC_HAS_IPV4 || UCLIBC_HAS_IPV6
- help
- If you want to include RPC support, enable this. RPC is rarely used
- for anything except for the NFS filesystem. Unless you plan to use
- NFS, you can probably leave this set to N and save some space.
-
- If you need to use NFS then you should answer Y.
-
-config UCLIBC_HAS_FULL_RPC
- bool "Full RPC support"
- depends on UCLIBC_HAS_RPC
- default y if !HAVE_SHARED
- help
- Normally we enable just enough RPC support for things like rshd and
- nfs mounts to work. If you find you need the rest of the RPC stuff,
- then enable this option. Most people can safely answer N.
-
-config UCLIBC_HAS_REENTRANT_RPC
- bool "Reentrant RPC support"
- depends on UCLIBC_HAS_RPC
- default y if !HAVE_SHARED
- help
- Most packages utilize the normal (non-reentrant) RPC functions, but
- some (like exportfs from nfs-utils) need these reentrant versions.
-
- Most people can safely answer N.
-
config UCLIBC_USE_NETLINK
bool "Use netlink to query interfaces"
depends on UCLIBC_HAS_SOCKET
diff --git a/include/netdb.h b/include/netdb.h
index 95abe95cb..a85797956 100644
--- a/include/netdb.h
+++ b/include/netdb.h
@@ -26,11 +26,6 @@
#include <netinet/in.h>
#include <stdint.h>
-#if defined __USE_MISC && defined __UCLIBC_HAS_RPC__
-/* This is necessary to make this include file properly replace the
- Sun version. */
-# include <rpc/netdb.h>
-#endif
#ifdef __USE_GNU
# define __need_sigevent_t
diff --git a/include/protocols/timed.h b/include/protocols/timed.h
index f50061cc1..06c2daec6 100644
--- a/include/protocols/timed.h
+++ b/include/protocols/timed.h
@@ -33,9 +33,6 @@
#define _PROTOCOLS_TIMED_H 1
#include <features.h>
-#ifdef __UCLIBC_HAS_RPC__
-#include <rpc/types.h>
-#endif
/*
* Time Synchronization Protocol
diff --git a/include/rpc/auth.h b/include/rpc/auth.h
deleted file mode 100644
index 70066fe52..000000000
--- a/include/rpc/auth.h
+++ /dev/null
@@ -1,225 +0,0 @@
-/* @(#)auth.h 2.3 88/08/07 4.0 RPCSRC; from 1.17 88/02/08 SMI */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-
-/*
- * auth.h, Authentication interface.
- *
- * Copyright (C) 1984, Sun Microsystems, Inc.
- *
- * The data structures are completely opaque to the client. The client
- * is required to pass a AUTH * to routines that create rpc
- * "sessions".
- */
-
-#ifndef _RPC_AUTH_H
-
-#define _RPC_AUTH_H 1
-#include <features.h>
-#include <rpc/xdr.h>
-
-__BEGIN_DECLS
-
-#define MAX_AUTH_BYTES 400
-#define MAXNETNAMELEN 255 /* maximum length of network user's name */
-
-/*
- * Status returned from authentication check
- */
-enum auth_stat {
- AUTH_OK=0,
- /*
- * failed at remote end
- */
- AUTH_BADCRED=1, /* bogus credentials (seal broken) */
- AUTH_REJECTEDCRED=2, /* client should begin new session */
- AUTH_BADVERF=3, /* bogus verifier (seal broken) */
- AUTH_REJECTEDVERF=4, /* verifier expired or was replayed */
- AUTH_TOOWEAK=5, /* rejected due to security reasons */
- /*
- * failed locally
- */
- AUTH_INVALIDRESP=6, /* bogus response verifier */
- AUTH_FAILED=7 /* some unknown reason */
-};
-
-union des_block {
- struct {
- u_int32_t high;
- u_int32_t low;
- } key;
- char c[8];
-};
-typedef union des_block des_block;
-extern bool_t xdr_des_block (XDR *__xdrs, des_block *__blkp) __THROW;
-
-/*
- * Authentication info. Opaque to client.
- */
-struct opaque_auth {
- enum_t oa_flavor; /* flavor of auth */
- caddr_t oa_base; /* address of more auth stuff */
- u_int oa_length; /* not to exceed MAX_AUTH_BYTES */
-};
-
-/*
- * Auth handle, interface to client side authenticators.
- */
-typedef struct AUTH AUTH;
-struct AUTH {
- struct opaque_auth ah_cred;
- struct opaque_auth ah_verf;
- union des_block ah_key;
- /* not sure whether non-const-ness is a part of the spec... if it is,
- * enclose "const" in #ifdef _LIBC / #endif
- * to make it effective only for libc compile */
- const
- struct auth_ops {
- void (*ah_nextverf) (AUTH *);
- int (*ah_marshal) (AUTH *, XDR *); /* nextverf & serialize */
- int (*ah_validate) (AUTH *, struct opaque_auth *);
- /* validate verifier */
- int (*ah_refresh) (AUTH *); /* refresh credentials */
- void (*ah_destroy) (AUTH *); /* destroy this structure */
- } *ah_ops;
- caddr_t ah_private;
-};
-
-
-/*
- * Authentication ops.
- * The ops and the auth handle provide the interface to the authenticators.
- *
- * AUTH *auth;
- * XDR *xdrs;
- * struct opaque_auth verf;
- */
-#define AUTH_NEXTVERF(auth) \
- ((*((auth)->ah_ops->ah_nextverf))(auth))
-#define auth_nextverf(auth) \
- ((*((auth)->ah_ops->ah_nextverf))(auth))
-
-#define AUTH_MARSHALL(auth, xdrs) \
- ((*((auth)->ah_ops->ah_marshal))(auth, xdrs))
-#define auth_marshall(auth, xdrs) \
- ((*((auth)->ah_ops->ah_marshal))(auth, xdrs))
-
-#define AUTH_VALIDATE(auth, verfp) \
- ((*((auth)->ah_ops->ah_validate))((auth), verfp))
-#define auth_validate(auth, verfp) \
- ((*((auth)->ah_ops->ah_validate))((auth), verfp))
-
-#define AUTH_REFRESH(auth) \
- ((*((auth)->ah_ops->ah_refresh))(auth))
-#define auth_refresh(auth) \
- ((*((auth)->ah_ops->ah_refresh))(auth))
-
-#define AUTH_DESTROY(auth) \
- ((*((auth)->ah_ops->ah_destroy))(auth))
-#define auth_destroy(auth) \
- ((*((auth)->ah_ops->ah_destroy))(auth))
-
-
-extern struct opaque_auth _null_auth;
-
-
-/*
- * These are the various implementations of client side authenticators.
- */
-
-/*
- * Unix style authentication
- * AUTH *authunix_create(machname, uid, gid, len, aup_gids)
- * char *machname;
- * int uid;
- * int gid;
- * int len;
- * int *aup_gids;
- */
-extern AUTH *authunix_create (char *__machname, __uid_t __uid, __gid_t __gid,
- int __len, __gid_t *__aup_gids);
-libc_hidden_proto(authunix_create)
-extern AUTH *authunix_create_default (void);
-libc_hidden_proto(authunix_create_default)
-extern AUTH *authnone_create (void) __THROW;
-libc_hidden_proto(authnone_create)
-#if 0
-extern AUTH *authdes_create (const char *__servername, u_int __window,
- struct sockaddr *__syncaddr, des_block *__ckey)
- __THROW;
-extern AUTH *authdes_pk_create (const char *, netobj *, u_int,
- struct sockaddr *, des_block *) __THROW;
-#endif
-
-
-#define AUTH_NONE 0 /* no authentication */
-#define AUTH_NULL 0 /* backward compatibility */
-#define AUTH_SYS 1 /* unix style (uid, gids) */
-#define AUTH_UNIX AUTH_SYS
-#define AUTH_SHORT 2 /* short hand unix style */
-#define AUTH_DES 3 /* des style (encrypted timestamps) */
-#define AUTH_DH AUTH_DES /* Diffie-Hellman (this is DES) */
-#define AUTH_KERB 4 /* kerberos style */
-
-#if 0
-/*
- * Netname manipulating functions
- *
- */
-extern int getnetname (char *) __THROW;
-extern int host2netname (char *, const char *, const char *) __THROW;
-extern int user2netname (char *, const uid_t, const char *) __THROW;
-extern int netname2user (const char *, uid_t *, gid_t *, int *, gid_t *)
- __THROW;
-extern int netname2host (const char *, char *, const int) __THROW;
-
-/*
- *
- * These routines interface to the keyserv daemon
- *
- */
-extern int key_decryptsession (char *, des_block *);
-extern int key_decryptsession_pk (char *, netobj *, des_block *);
-extern int key_encryptsession (char *, des_block *);
-extern int key_encryptsession_pk (char *, netobj *, des_block *);
-extern int key_gendes (des_block *);
-extern int key_setsecret (char *);
-extern int key_secretkey_is_set (void);
-extern int key_get_conv (char *, des_block *);
-#endif
-
-/*
- * XDR an opaque authentication struct.
- */
-extern bool_t xdr_opaque_auth (XDR *, struct opaque_auth *) __THROW;
-libc_hidden_proto(xdr_opaque_auth)
-
-__END_DECLS
-
-#endif /* rpc/auth.h */
diff --git a/include/rpc/auth_des.h b/include/rpc/auth_des.h
deleted file mode 100644
index bcd96e424..000000000
--- a/include/rpc/auth_des.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Copyright (C) 1996, 1997, 1998, 1999 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
- 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.
-
- 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _RPC_AUTH_DES_H
-#define _RPC_AUTH_DES_H 1
-
-#include <sys/cdefs.h>
-#include <rpc/auth.h>
-
-__BEGIN_DECLS
-
-#if 0
-/* There are two kinds of "names": fullnames and nicknames */
-enum authdes_namekind
- {
- ADN_FULLNAME,
- ADN_NICKNAME
- };
-
-/* A fullname contains the network name of the client,
- a conversation key and the window */
-struct authdes_fullname
- {
- char *name; /* network name of client, up to MAXNETNAMELEN */
- des_block key; /* conversation key */
- uint32_t window; /* associated window */
- };
-
-/* A credential */
-struct authdes_cred
- {
- enum authdes_namekind adc_namekind;
- struct authdes_fullname adc_fullname;
- uint32_t adc_nickname;
- };
-#endif
-
-/* A timeval replacement for !32bit platforms */
-struct rpc_timeval
- {
- uint32_t tv_sec; /* Seconds. */
- uint32_t tv_usec; /* Microseconds. */
- };
-
-#if 0
-/* A des authentication verifier */
-struct authdes_verf
- {
- union
- {
- struct rpc_timeval adv_ctime; /* clear time */
- des_block adv_xtime; /* crypt time */
- }
- adv_time_u;
- uint32_t adv_int_u;
- };
-
-/* des authentication verifier: client variety
-
- adv_timestamp is the current time.
- adv_winverf is the credential window + 1.
- Both are encrypted using the conversation key. */
-#define adv_timestamp adv_time_u.adv_ctime
-#define adv_xtimestamp adv_time_u.adv_xtime
-#define adv_winverf adv_int_u
-
-/* des authentication verifier: server variety
-
- adv_timeverf is the client's timestamp + client's window
- adv_nickname is the server's nickname for the client.
- adv_timeverf is encrypted using the conversation key. */
-#define adv_timeverf adv_time_u.adv_ctime
-#define adv_xtimeverf adv_time_u.adv_xtime
-#define adv_nickname adv_int_u
-
-/* Map a des credential into a unix cred. */
-extern int authdes_getucred (const struct authdes_cred * __adc,
- uid_t * __uid, gid_t * __gid,
- short *__grouplen, gid_t * __groups) __THROW;
-
-/* Get the public key for NAME and place it in KEY. NAME can only be
- up to MAXNETNAMELEN bytes long and the destination buffer KEY should
- have HEXKEYBYTES + 1 bytes long to fit all characters from the key. */
-extern int getpublickey (const char *__name, char *__key) __THROW;
-
-/* Get the secret key for NAME and place it in KEY. PASSWD is used to
- decrypt the encrypted key stored in the database. NAME can only be
- up to MAXNETNAMELEN bytes long and the destination buffer KEY
- should have HEXKEYBYTES + 1 bytes long to fit all characters from
- the key. */
-extern int getsecretkey (const char *__name, char *__key,
- const char *__passwd) __THROW;
-#endif
-
-extern int rtime (struct sockaddr_in *__addrp, struct rpc_timeval *__timep,
- struct rpc_timeval *__timeout) __THROW;
-
-__END_DECLS
-
-
-#endif /* rpc/auth_des.h */
diff --git a/include/rpc/auth_unix.h b/include/rpc/auth_unix.h
deleted file mode 100644
index 713fcb437..000000000
--- a/include/rpc/auth_unix.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* @(#)auth_unix.h 2.2 88/07/29 4.0 RPCSRC; from 1.8 88/02/08 SMI */
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but a