diff options
Diffstat (limited to 'net/sunrpc/rpcb_clnt.c')
-rw-r--r-- | net/sunrpc/rpcb_clnt.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/net/sunrpc/rpcb_clnt.c b/net/sunrpc/rpcb_clnt.c index 9a20f380ab09..fc881a675eb9 100644 --- a/net/sunrpc/rpcb_clnt.c +++ b/net/sunrpc/rpcb_clnt.c | |||
@@ -12,6 +12,8 @@ | |||
12 | * Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de> | 12 | * Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de> |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/module.h> | ||
16 | |||
15 | #include <linux/types.h> | 17 | #include <linux/types.h> |
16 | #include <linux/socket.h> | 18 | #include <linux/socket.h> |
17 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
@@ -247,21 +249,20 @@ int rpcb_register(u32 prog, u32 vers, int prot, unsigned short port, int *okay) | |||
247 | return error; | 249 | return error; |
248 | } | 250 | } |
249 | 251 | ||
250 | #ifdef CONFIG_ROOT_NFS | ||
251 | /** | 252 | /** |
252 | * rpcb_getport_external - obtain the port for an RPC service on a given host | 253 | * rpcb_getport_sync - obtain the port for an RPC service on a given host |
253 | * @sin: address of remote peer | 254 | * @sin: address of remote peer |
254 | * @prog: RPC program number to bind | 255 | * @prog: RPC program number to bind |
255 | * @vers: RPC version number to bind | 256 | * @vers: RPC version number to bind |
256 | * @prot: transport protocol to use to make this request | 257 | * @prot: transport protocol to use to make this request |
257 | * | 258 | * |
258 | * Called from outside the RPC client in a synchronous task context. | 259 | * Called from outside the RPC client in a synchronous task context. |
260 | * Uses default timeout parameters specified by underlying transport. | ||
259 | * | 261 | * |
260 | * For now, this supports only version 2 queries, but is used only by | 262 | * XXX: Needs to support IPv6, and rpcbind versions 3 and 4 |
261 | * mount_clnt for NFS_ROOT. | ||
262 | */ | 263 | */ |
263 | int rpcb_getport_external(struct sockaddr_in *sin, __u32 prog, | 264 | int rpcb_getport_sync(struct sockaddr_in *sin, __u32 prog, |
264 | __u32 vers, int prot) | 265 | __u32 vers, int prot) |
265 | { | 266 | { |
266 | struct rpcbind_args map = { | 267 | struct rpcbind_args map = { |
267 | .r_prog = prog, | 268 | .r_prog = prog, |
@@ -278,10 +279,10 @@ int rpcb_getport_external(struct sockaddr_in *sin, __u32 prog, | |||
278 | char hostname[40]; | 279 | char hostname[40]; |
279 | int status; | 280 | int status; |
280 | 281 | ||
281 | dprintk("RPC: rpcb_getport_external(%u.%u.%u.%u, %u, %u, %d)\n", | 282 | dprintk("RPC: %s(" NIPQUAD_FMT ", %u, %u, %d)\n", |
282 | NIPQUAD(sin->sin_addr.s_addr), prog, vers, prot); | 283 | __FUNCTION__, NIPQUAD(sin->sin_addr.s_addr), prog, vers, prot); |
283 | 284 | ||
284 | sprintf(hostname, "%u.%u.%u.%u", NIPQUAD(sin->sin_addr.s_addr)); | 285 | sprintf(hostname, NIPQUAD_FMT, NIPQUAD(sin->sin_addr.s_addr)); |
285 | rpcb_clnt = rpcb_create(hostname, (struct sockaddr *)sin, prot, 2, 0); | 286 | rpcb_clnt = rpcb_create(hostname, (struct sockaddr *)sin, prot, 2, 0); |
286 | if (IS_ERR(rpcb_clnt)) | 287 | if (IS_ERR(rpcb_clnt)) |
287 | return PTR_ERR(rpcb_clnt); | 288 | return PTR_ERR(rpcb_clnt); |
@@ -296,7 +297,7 @@ int rpcb_getport_external(struct sockaddr_in *sin, __u32 prog, | |||
296 | } | 297 | } |
297 | return status; | 298 | return status; |
298 | } | 299 | } |
299 | #endif | 300 | EXPORT_SYMBOL_GPL(rpcb_getport_sync); |
300 | 301 | ||
301 | /** | 302 | /** |
302 | * rpcb_getport - obtain the port for a given RPC service on a given host | 303 | * rpcb_getport - obtain the port for a given RPC service on a given host |