[roland/sunrpc] Exclude rpcent functions and NSS backends for rpc, key when excluding sunrpc.
Commit Message
The rpcent functions (from <rpc/netdb.h>) are useless in a C library that
does not include sunrpc support. The getpublickey function was already
excluded, but its NSS backends were not.
This change just moves around and conditionalizes the code so that those
are left out when sunrpc is also left out entirely. It has no effect on
existing configurations, which still build in sunrpc. A future follow-on
change that should be made eventually is to make the rpcent functions
unlinkable like the rest of sunrpc, when compiling a compat configuration
without --enable-obsolete-rpc.
Tested with 'make check-abi' on i686-linux-gnu and x86_64-linux-gnu.
If nobody objects, I'll commit this on Tuesday.
Thanks,
Roland
* inet/Versions (libc: GLIBC_2.0): Move getrpcbyname, getrpcbyname_r,
getrpcbynumber, getrpcbynumber_r, getrpcent, getrpcent_r, endrpcent,
setrpcent, and getrpcport to ...
* sunrpc/Versions (libc: GLIBC_2.0): ... here.
* inet/Versions (libc: GLIBC_2.1.2): Move getrpcbyname_r,
getrpcbynumber_r, and getrpcent_r to ...
* sunrpc/Versions (libc: GLIBC_2.1.2): ... this new set.
* inet/getrpcbyname.c: Moved ...
* sunrpc/getrpcbyname.c: ... here.
* inet/getrpcbyname_r.c: Moved ...
* sunrpc/getrpcbyname_r.c: ... here.
* inet/getrpcbynumber.c: Moved ...
* sunrpc/getrpcbynumber.c: ... here.
* inet/getrpcbynumber_r.c: Moved ...
* sunrpc/getrpcbynumber_r.c: ... here.
* inet/getrpcent.c: Moved ...
* sunrpc/getrpcent.c: ... here.
* inet/getrpcent_r.c: Moved ...
* sunrpc/getrpcent_r.c: ... here.
* inet/Makefile (routines): Move those to ...
* sunrpc/Makefile (routines): ... here.
* nss/Makefile (databases): Add key and rpc only if sunrpc appears in
the $(subdirs) list.
Comments
On 01/16/2015 06:46 PM, Roland McGrath wrote:
> The rpcent functions (from <rpc/netdb.h>) are useless in a C library that
> does not include sunrpc support. The getpublickey function was already
> excluded, but its NSS backends were not.
>
> This change just moves around and conditionalizes the code so that those
> are left out when sunrpc is also left out entirely. It has no effect on
> existing configurations, which still build in sunrpc. A future follow-on
> change that should be made eventually is to make the rpcent functions
> unlinkable like the rest of sunrpc, when compiling a compat configuration
> without --enable-obsolete-rpc.
>
> Tested with 'make check-abi' on i686-linux-gnu and x86_64-linux-gnu.
>
> If nobody objects, I'll commit this on Tuesday.
Please do not commit this. We are effectively frozen and only bug fixes
should go into the branch. Definitely not something like this patch.
Please do ask for reviewers though and commit to 2.22 when it opens.
Cheers,
Carlos.
@@ -37,8 +37,6 @@ routines := htonl htons \
getproto getproto_r getprtent getprtent_r getprtname getprtname_r \
getsrvbynm getsrvbynm_r getsrvbypt getsrvbypt_r getservent \
getservent_r \
- getrpcent getrpcbyname getrpcbynumber \
- getrpcent_r getrpcbyname_r getrpcbynumber_r \
ether_aton ether_aton_r ether_hton ether_line \
ether_ntoa ether_ntoa_r ether_ntoh \
rcmd rexec ruserpass \
@@ -7,8 +7,7 @@ libc {
rexecoptions;
# e*
- endaliasent; endhostent; endnetent; endnetgrent; endprotoent; endrpcent;
- endservent;
+ endaliasent; endhostent; endnetent; endnetgrent; endprotoent; endservent;
# e*
ether_aton; ether_aton_r; ether_hostton; ether_line; ether_ntoa;
@@ -21,9 +20,8 @@ libc {
gethostent_r; getnetbyaddr; getnetbyaddr_r; getnetbyname;
getnetbyname_r; getnetent; getnetent_r; getnetgrent; getnetgrent_r;
getprotobyname; getprotobyname_r; getprotobynumber;
- getprotobynumber_r; getprotoent; getprotoent_r; getrpcbyname;
- getrpcbyname_r; getrpcbynumber; getrpcbynumber_r; getrpcent; getrpcent_r;
- getrpcport; getservbyname; getservbyname_r; getservbyport;
+ getprotobynumber_r; getprotoent; getprotoent_r;
+ getservbyname; getservbyname_r; getservbyport;
getservbyport_r; getservent; getservent_r;
# h*
@@ -41,7 +39,7 @@ libc {
rcmd; rexec; rresvport; ruserok; ruserpass;
# s*
- setaliasent; setnetent; setnetgrent; setprotoent; setrpcent; setservent;
+ setaliasent; setnetent; setnetgrent; setprotoent; setservent;
}
GLIBC_2.1 {
# variables in normal name space
@@ -55,8 +53,7 @@ libc {
getaliasbyname_r; getaliasent_r; gethostbyaddr_r; gethostbyname2_r;
gethostbyname_r; gethostent_r; getnetbyaddr_r; getnetbyname_r;
getnetent_r; getnetgrent_r; getprotobyname_r; getprotobynumber_r;
- getprotoent_r; getrpcbyname_r; getrpcbynumber_r; getrpcent_r;
- getservbyname_r;
+ getprotoent_r; getservbyname_r;
}
GLIBC_2.2 {
# i*
@@ -31,8 +31,12 @@ routines = nsswitch getnssent getnssent_r digits_dots \
# These are the databases that go through nss dispatch.
# Caution: if you add a database here, you must add its real name
# in databases.def, too.
-databases = proto service hosts network grp pwd rpc ethers \
- spwd netgrp key alias sgrp
+databases = proto service hosts network grp pwd ethers \
+ spwd netgrp alias sgrp
+
+ifneq (,$(filter sunrpc,$(subdirs)))
+databases += key rpc
+endif
others := getent makedb
install-bin := getent makedb
@@ -76,6 +76,8 @@ routines := auth_none authuxprot bindrsvprt clnt_raw clnt_simp \
pmap_rmt rpc_prot rpc_common rpc_cmsg svc_auth svc_authux svc_raw \
svc_simple xdr_float xdr_rec publickey authdes_prot \
des_crypt des_impl des_soft key_prot openchild rtime svcauth_des \
+ getrpcent getrpcbyname getrpcbynumber \
+ getrpcent_r getrpcbyname_r getrpcbynumber_r \
clnt_unix svc_unix create_xid $(need-export-routines)
ifneq ($(link-obsolete-rpc),yes)
# We only add the RPC for compatibility to libc.so.
@@ -21,8 +21,13 @@ libc {
clnt_perror; clnt_spcreateerror; clnt_sperrno; clnt_sperror;
clntraw_create; clnttcp_create; clntudp_bufcreate; clntudp_create;
+ # e*
+ endrpcent;
+
# g*
get_myaddress; getpublickey; getsecretkey;
+ getrpcbyname; getrpcbyname_r; getrpcbynumber; getrpcbynumber_r;
+ getrpcent; getrpcent_r; getrpcport;
# p*
pmap_getmaps; pmap_getport; pmap_rmtcall; pmap_set; pmap_unset;
@@ -31,6 +36,7 @@ libc {
registerrpc;
# s*
+ setrpcent;
svc_exit; svc_getreq; svc_getreqset; svc_register; svc_run;
svc_sendreply; svc_unregister; svcerr_auth; svcerr_decode;
svcerr_noproc; svcerr_noprog; svcerr_progvers; svcerr_systemerr;
@@ -106,6 +112,9 @@ libc {
xdr_hyper; xdr_u_hyper; xdr_longlong_t; xdr_u_longlong_t;
xdr_int64_t; xdr_uint64_t;
}
+ GLIBC_2.1.2 {
+ getrpcbyname_r; getrpcbynumber_r; getrpcent_r;
+ }
GLIBC_2.2 {
svc_getreq_common; svc_getreq_poll; svc_max_pollfd; svc_pollfd;
}
similarity index 100%
rename from inet/getrpcbyname.c
rename to sunrpc/getrpcbyname.c
similarity index 100%
rename from inet/getrpcbyname_r.c
rename to sunrpc/getrpcbyname_r.c
similarity index 100%
rename from inet/getrpcbynumber.c
rename to sunrpc/getrpcbynumber.c
similarity index 100%
rename from inet/getrpcbynumber_r.c
rename to sunrpc/getrpcbynumber_r.c
similarity index 100%
rename from inet/getrpcent.c
rename to sunrpc/getrpcent.c
similarity index 100%
rename from inet/getrpcent_r.c
rename to sunrpc/getrpcent_r.c