mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-03 04:01:43 +08:00
5c6e674735
The new __libc_rpc_gethostbyname function calls gethostbyname2_r with an AF_INET argument and is therefore not affected by the RES_USE_INET6 flag. Validated with the following test program, with and without RES_OPTIONS=inet6, against a NFS server. (Link with -lrpcsvc.) #include <rpc/clnt.h> #include <rpcsvc/mount.h> #include <stdio.h> #include <string.h> static void usage (char **argv) { printf ("usage:\n" " %1$s HOST getrpcport\n" " %1$s HOST callrpc\n" " %1$s HOST clnt_create\n", argv[0]); } static void dump_exports (struct exportnode *exports) { while (exports != NULL) { printf ("%s\n", exports->ex_dir); exports = exports->ex_next; } } int main (int argc, char **argv) { if (argc != 3) { usage (argv); return 1; } const char *host = argv[1]; const char *command = argv[2]; if (strcmp (command, "getrpcport") == 0) { int port = getrpcport (host, MOUNTPROG, MOUNTVERS, IPPROTO_UDP); printf ("getrpcport: %d\n", port); } else if (strcmp (command, "callrpc") == 0) { struct exportnode *exports = NULL; int ret = callrpc (host, MOUNTPROG, MOUNTVERS, MOUNTPROC_EXPORT, (xdrproc_t) xdr_void, NULL, (xdrproc_t) xdr_exports, (char *)&exports); if (ret != 0) { clnt_perrno (ret); puts (""); return 1; } dump_exports (exports); } else if (strcmp (command, "clnt_create") == 0) { CLIENT *client = clnt_create (host, MOUNTPROG, MOUNTVERS, "udp"); if (client == NULL) { printf ("error: clnt_create failed\n"); return 1; } struct exportnode *exports = NULL; int ret = CLNT_CALL (client, MOUNTPROC_EXPORT, (xdrproc_t) xdr_void, NULL, (xdrproc_t) xdr_exports, (char *)&exports, ((struct timeval) {15, 0})); if (ret != 0) { clnt_perrno (ret); puts (""); return 1; } dump_exports (exports); } else { usage (argv); return 1; } return 0; } |
||
---|---|---|
.. | ||
rpc | ||
rpcsvc | ||
auth_des.c | ||
auth_none.c | ||
auth_unix.c | ||
authdes_prot.c | ||
authuxprot.c | ||
bindrsvprt.c | ||
bug20790.x | ||
clnt_gen.c | ||
clnt_perr.c | ||
clnt_raw.c | ||
clnt_simp.c | ||
clnt_tcp.c | ||
clnt_udp.c | ||
clnt_unix.c | ||
create_xid.c | ||
des_crypt.c | ||
des_impl.c | ||
des_soft.c | ||
etc.rpc | ||
get_myaddr.c | ||
getrpcbyname_r.c | ||
getrpcbyname.c | ||
getrpcbynumber_r.c | ||
getrpcbynumber.c | ||
getrpcent_r.c | ||
getrpcent.c | ||
getrpcport.c | ||
key_call.c | ||
key_prot.c | ||
Makefile | ||
netname.c | ||
openchild.c | ||
pm_getmaps.c | ||
pm_getport.c | ||
pmap_clnt.c | ||
pmap_prot2.c | ||
pmap_prot.c | ||
pmap_rmt.c | ||
proto.h | ||
publickey.c | ||
rpc_clntout.c | ||
rpc_cmsg.c | ||
rpc_common.c | ||
rpc_cout.c | ||
rpc_dtable.c | ||
rpc_gethostbyname.c | ||
rpc_hout.c | ||
rpc_main.c | ||
rpc_parse.c | ||
rpc_parse.h | ||
rpc_prot.c | ||
rpc_sample.c | ||
rpc_scan.c | ||
rpc_scan.h | ||
rpc_svcout.c | ||
rpc_tblout.c | ||
rpc_thread.c | ||
rpc_util.c | ||
rpc_util.h | ||
rpcgen.c | ||
rtime.c | ||
svc_auth.c | ||
svc_authux.c | ||
svc_raw.c | ||
svc_run.c | ||
svc_simple.c | ||
svc_tcp.c | ||
svc_udp.c | ||
svc_unix.c | ||
svc.c | ||
svcauth_des.c | ||
test-rpcent.c | ||
thrsvc.c | ||
tst-getmyaddr.c | ||
tst-xdrmem2.c | ||
tst-xdrmem.c | ||
Versions | ||
xcrypt.c | ||
xdr_array.c | ||
xdr_float.c | ||
xdr_intXX_t.c | ||
xdr_mem.c | ||
xdr_rec.c | ||
xdr_ref.c | ||
xdr_sizeof.c | ||
xdr_stdio.c | ||
xdr.c |