All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chuck Lever <chuck.lever@oracle.com>
To: neilb@suse.de
Cc: nfs@lists.sourceforge.net
Subject: [PATCH 13/13] SUNRPC: fix up svc_create_socket() to take a sockaddr struct + length
Date: Thu, 18 Jan 2007 18:51:05 -0500	[thread overview]
Message-ID: <20070118235105.24266.88907.stgit@localhost.localdomain> (raw)
In-Reply-To: <20070118234855.24266.37463.stgit@localhost.localdomain>

Replace existing svc_create_socket() API to allow callers to pass addresses
larger than a sockaddr_in.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Cc: Aurelien Charbon <aurelien.charbon@ext.bull.net>
---

 net/sunrpc/svcsock.c |   15 +++++++--------
 1 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index 7f4f428..ae906b9 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -1678,7 +1678,7 @@ EXPORT_SYMBOL_GPL(svc_addsock);
  * Create socket for RPC service.
  */
 static int svc_create_socket(struct svc_serv *serv, int protocol,
-				struct sockaddr_in *sin, int flags)
+				struct sockaddr *sin, int len, int flags)
 {
 	struct svc_sock	*svsk;
 	struct socket	*sock;
@@ -1688,8 +1688,7 @@ static int svc_create_socket(struct svc_
 
 	dprintk("svc: svc_create_socket(%s, %d, %s)\n",
 			serv->sv_program->pg_name, protocol,
-			__svc_print_addr((struct sockaddr *) sin, buf,
-								sizeof(buf)));
+			__svc_print_addr(sin, buf, sizeof(buf)));
 
 	if (protocol != IPPROTO_UDP && protocol != IPPROTO_TCP) {
 		printk(KERN_WARNING "svc: only UDP and TCP "
@@ -1698,15 +1697,14 @@ static int svc_create_socket(struct svc_
 	}
 	type = (protocol == IPPROTO_UDP)? SOCK_DGRAM : SOCK_STREAM;
 
-	if ((error = sock_create_kern(PF_INET, type, protocol, &sock)) < 0)
+	if ((error = sock_create_kern(sin->sa_family, type, protocol, &sock)) < 0)
 		return error;
 
 	svc_reclassify_socket(sock);
 
 	if (type == SOCK_STREAM)
-		sock->sk->sk_reuse = 1; /* allow address reuse */
-	error = kernel_bind(sock, (struct sockaddr *) sin,
-					sizeof(*sin));
+		sock->sk->sk_reuse = 1;		/* allow address reuse */
+	error = kernel_bind(sock, sin, len);
 	if (error < 0)
 		goto bummer;
 
@@ -1784,7 +1782,8 @@ int svc_makesock(struct svc_serv *serv, 
 	};
 
 	dprintk("svc: creating socket proto = %d\n", protocol);
-	return svc_create_socket(serv, protocol, &sin, flags);
+	return svc_create_socket(serv, protocol, (struct sockaddr *) &sin,
+							sizeof(sin), flags);
 }
 
 /*

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

  parent reply	other threads:[~2007-01-18 23:51 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-01-18 23:48 [PATCH 00/13] RPC server pre-requisites for IPv6 Chuck Lever
2007-01-18 23:50 ` [PATCH 01/13] SUNRPC: update internal API: separate pmap register and temp sockets Chuck Lever
2007-01-18 23:50 ` [PATCH 02/13] SUNRPC: allow creating an RPC service without registering with portmapper Chuck Lever
2007-01-18 23:50 ` [PATCH 03/13] SUNRPC: Cache remote peer's address in svc_sock Chuck Lever
2007-01-18 23:50 ` [PATCH 04/13] SUNRPC: Don't set msg_name and msg_namelen when calling sock_recvmsg Chuck Lever
2007-01-18 23:50 ` [PATCH 05/13] SUNRPC: Add a function to format the address in an svc_rqst for printing Chuck Lever
2007-01-18 23:50 ` [PATCH 06/13] SUNRPC: Use sockaddr_storage to store address in svc_deferred_req Chuck Lever
2007-01-18 23:50 ` [PATCH 07/13] SUNRPC: Provide room in svc_rqst for larger addresses Chuck Lever
2007-01-18 23:50 ` [PATCH 08/13] SUNRPC: Make rq_daddr field address-version independent Chuck Lever
2007-01-18 23:50 ` [PATCH 09/13] SUNRPC: teach svc_sendto() to deal with IPv6 addresses Chuck Lever
2007-01-18 23:50 ` [PATCH 10/13] SUNRPC: add a "generic" function to see if the peer uses a secure port Chuck Lever
2007-01-18 23:50 ` [PATCH 11/13] SUNRPC: Support IPv6 addresses in svc_tcp_accept Chuck Lever
2007-01-18 23:51 ` [PATCH 12/13] SUNRPC: support IPv6 addresses in RPC server's UDP receive path Chuck Lever
2007-01-18 23:51 ` Chuck Lever [this message]
2007-01-30  5:24 ` [PATCH 00/13] RPC server pre-requisites for IPv6 Neil Brown
  -- strict thread matches above, loose matches on Subject: below --
2006-11-13 12:56 [PATCH 00/13] repost RPC server patches for IPv6 support Chuck Lever
2006-11-13 12:58 ` [PATCH 13/13] SUNRPC: fix up svc_create_socket() to take a sockaddr struct + length Chuck Lever

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070118235105.24266.88907.stgit@localhost.localdomain \
    --to=chuck.lever@oracle.com \
    --cc=neilb@suse.de \
    --cc=nfs@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.