|
@@ -533,6 +533,27 @@ rpc_call_setup(struct rpc_task *task, struct rpc_message *msg, int flags)
|
|
|
task->tk_action = rpc_exit_task;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * rpc_peeraddr - extract remote peer address from clnt's xprt
|
|
|
+ * @clnt: RPC client structure
|
|
|
+ * @buf: target buffer
|
|
|
+ * @size: length of target buffer
|
|
|
+ *
|
|
|
+ * Returns the number of bytes that are actually in the stored address.
|
|
|
+ */
|
|
|
+size_t rpc_peeraddr(struct rpc_clnt *clnt, struct sockaddr *buf, size_t bufsize)
|
|
|
+{
|
|
|
+ size_t bytes;
|
|
|
+ struct rpc_xprt *xprt = clnt->cl_xprt;
|
|
|
+
|
|
|
+ bytes = sizeof(xprt->addr);
|
|
|
+ if (bytes > bufsize)
|
|
|
+ bytes = bufsize;
|
|
|
+ memcpy(buf, &clnt->cl_xprt->addr, bytes);
|
|
|
+ return sizeof(xprt->addr);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(rpc_peeraddr);
|
|
|
+
|
|
|
void
|
|
|
rpc_setbufsize(struct rpc_clnt *clnt, unsigned int sndsize, unsigned int rcvsize)
|
|
|
{
|