mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-29 23:24:11 +08:00
SUNRPC: Rename rpcb_getport_external routine
In preparation for handling NFS mount option parsing in the kernel, rename rpcb_getport_external as rpcb_get_port_sync, and make it available always (instead of only when CONFIG_ROOT_NFS is enabled). Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
f7fb558e50
commit
cce63cd637
@ -428,7 +428,7 @@ static int __init root_nfs_getport(int program, int version, int proto)
|
|||||||
printk(KERN_NOTICE "Looking up port of RPC %d/%d on %u.%u.%u.%u\n",
|
printk(KERN_NOTICE "Looking up port of RPC %d/%d on %u.%u.%u.%u\n",
|
||||||
program, version, NIPQUAD(servaddr));
|
program, version, NIPQUAD(servaddr));
|
||||||
set_sockaddr(&sin, servaddr, 0);
|
set_sockaddr(&sin, servaddr, 0);
|
||||||
return rpcb_getport_external(&sin, program, version, proto);
|
return rpcb_getport_sync(&sin, program, version, proto);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -120,8 +120,10 @@ struct rpc_clnt *rpc_bind_new_program(struct rpc_clnt *,
|
|||||||
struct rpc_clnt *rpc_clone_client(struct rpc_clnt *);
|
struct rpc_clnt *rpc_clone_client(struct rpc_clnt *);
|
||||||
void rpc_shutdown_client(struct rpc_clnt *);
|
void rpc_shutdown_client(struct rpc_clnt *);
|
||||||
void rpc_release_client(struct rpc_clnt *);
|
void rpc_release_client(struct rpc_clnt *);
|
||||||
|
|
||||||
int rpcb_register(u32, u32, int, unsigned short, int *);
|
int rpcb_register(u32, u32, int, unsigned short, int *);
|
||||||
void rpcb_getport(struct rpc_task *);
|
void rpcb_getport(struct rpc_task *);
|
||||||
|
int rpcb_getport_sync(struct sockaddr_in *, __u32, __u32, int);
|
||||||
|
|
||||||
void rpc_call_setup(struct rpc_task *, struct rpc_message *, int);
|
void rpc_call_setup(struct rpc_task *, struct rpc_message *, int);
|
||||||
|
|
||||||
@ -141,10 +143,5 @@ void rpc_force_rebind(struct rpc_clnt *);
|
|||||||
size_t rpc_peeraddr(struct rpc_clnt *, struct sockaddr *, size_t);
|
size_t rpc_peeraddr(struct rpc_clnt *, struct sockaddr *, size_t);
|
||||||
char * rpc_peeraddr2str(struct rpc_clnt *, enum rpc_display_format_t);
|
char * rpc_peeraddr2str(struct rpc_clnt *, enum rpc_display_format_t);
|
||||||
|
|
||||||
/*
|
|
||||||
* Helper function for NFSroot support
|
|
||||||
*/
|
|
||||||
int rpcb_getport_external(struct sockaddr_in *, __u32, __u32, int);
|
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
#endif /* _LINUX_SUNRPC_CLNT_H */
|
#endif /* _LINUX_SUNRPC_CLNT_H */
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
* Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de>
|
* Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
|
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/socket.h>
|
#include <linux/socket.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
@ -247,21 +249,20 @@ int rpcb_register(u32 prog, u32 vers, int prot, unsigned short port, int *okay)
|
|||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_ROOT_NFS
|
|
||||||
/**
|
/**
|
||||||
* rpcb_getport_external - obtain the port for an RPC service on a given host
|
* rpcb_getport_sync - obtain the port for an RPC service on a given host
|
||||||
* @sin: address of remote peer
|
* @sin: address of remote peer
|
||||||
* @prog: RPC program number to bind
|
* @prog: RPC program number to bind
|
||||||
* @vers: RPC version number to bind
|
* @vers: RPC version number to bind
|
||||||
* @prot: transport protocol to use to make this request
|
* @prot: transport protocol to use to make this request
|
||||||
*
|
*
|
||||||
* Called from outside the RPC client in a synchronous task context.
|
* Called from outside the RPC client in a synchronous task context.
|
||||||
|
* Uses default timeout parameters specified by underlying transport.
|
||||||
*
|
*
|
||||||
* For now, this supports only version 2 queries, but is used only by
|
* XXX: Needs to support IPv6, and rpcbind versions 3 and 4
|
||||||
* mount_clnt for NFS_ROOT.
|
|
||||||
*/
|
*/
|
||||||
int rpcb_getport_external(struct sockaddr_in *sin, __u32 prog,
|
int rpcb_getport_sync(struct sockaddr_in *sin, __u32 prog,
|
||||||
__u32 vers, int prot)
|
__u32 vers, int prot)
|
||||||
{
|
{
|
||||||
struct rpcbind_args map = {
|
struct rpcbind_args map = {
|
||||||
.r_prog = prog,
|
.r_prog = prog,
|
||||||
@ -278,10 +279,10 @@ int rpcb_getport_external(struct sockaddr_in *sin, __u32 prog,
|
|||||||
char hostname[40];
|
char hostname[40];
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
dprintk("RPC: rpcb_getport_external(%u.%u.%u.%u, %u, %u, %d)\n",
|
dprintk("RPC: %s(" NIPQUAD_FMT ", %u, %u, %d)\n",
|
||||||
NIPQUAD(sin->sin_addr.s_addr), prog, vers, prot);
|
__FUNCTION__, NIPQUAD(sin->sin_addr.s_addr), prog, vers, prot);
|
||||||
|
|
||||||
sprintf(hostname, "%u.%u.%u.%u", NIPQUAD(sin->sin_addr.s_addr));
|
sprintf(hostname, NIPQUAD_FMT, NIPQUAD(sin->sin_addr.s_addr));
|
||||||
rpcb_clnt = rpcb_create(hostname, (struct sockaddr *)sin, prot, 2, 0);
|
rpcb_clnt = rpcb_create(hostname, (struct sockaddr *)sin, prot, 2, 0);
|
||||||
if (IS_ERR(rpcb_clnt))
|
if (IS_ERR(rpcb_clnt))
|
||||||
return PTR_ERR(rpcb_clnt);
|
return PTR_ERR(rpcb_clnt);
|
||||||
@ -296,7 +297,7 @@ int rpcb_getport_external(struct sockaddr_in *sin, __u32 prog,
|
|||||||
}
|
}
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
#endif
|
EXPORT_SYMBOL_GPL(rpcb_getport_sync);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* rpcb_getport - obtain the port for a given RPC service on a given host
|
* rpcb_getport - obtain the port for a given RPC service on a given host
|
||||||
|
Loading…
Reference in New Issue
Block a user