* [PATCH] pnfsd-lexp: Export correct ipv6 address for local exports
@ 2011-05-31 18:20 Michael Groshans
0 siblings, 0 replies; only message in thread
From: Michael Groshans @ 2011-05-31 18:20 UTC (permalink / raw)
To: linux-nfs
From: Michael Groshans <groshans@umich.edu>
A sockaddr is not big enough to hold most ipv6 addresses. Changed to use
sockaddr_storage to hold the ipv6 address used for local exports.
Signed-off by: Michael Groshans <groshans@umich.edu>
---
fs/nfsd/pnfsd.h | 2 +-
fs/nfsd/pnfsd_lexp.c | 6 +++---
include/linux/sunrpc/svc_xprt.h | 6 +++---
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/fs/nfsd/pnfsd.h b/fs/nfsd/pnfsd.h
index c11d93d..56adc53 100644
--- a/fs/nfsd/pnfsd.h
+++ b/fs/nfsd/pnfsd.h
@@ -135,7 +135,7 @@ void pnfs_set_device_notify(clientid_t *, unsigned int types);
void pnfs_clear_device_notify(struct nfs4_client *);
#if defined(CONFIG_PNFSD_LOCAL_EXPORT)
-extern struct sockaddr pnfsd_lexp_addr;
+extern struct sockaddr_storage pnfsd_lexp_addr;
extern size_t pnfs_lexp_addr_len;
extern void pnfsd_lexp_init(struct inode *);
diff --git a/fs/nfsd/pnfsd_lexp.c b/fs/nfsd/pnfsd_lexp.c
index e9382da..86614b1 100644
--- a/fs/nfsd/pnfsd_lexp.c
+++ b/fs/nfsd/pnfsd_lexp.c
@@ -27,7 +27,7 @@
#define NFSDDBG_FACILITY NFSDDBG_PNFS
-struct sockaddr pnfsd_lexp_addr;
+struct sockaddr_storage pnfsd_lexp_addr;
size_t pnfs_lexp_addr_len;
static wait_queue_head_t lo_recall_wq;
@@ -87,7 +87,7 @@ pnfsd_lexp_get_device_info(struct super_block *sb,
goto out;
}
- /* count the number of comma-delimited DS IPs */
+ /* format local address */
fdev.fl_device_length = 1;
fdev.fl_device_list = fl_devices;
@@ -100,7 +100,7 @@ pnfsd_lexp_get_device_info(struct super_block *sb,
if (err < 0)
goto out;
daddr.r_addr.len = err;
- switch (pnfsd_lexp_addr.sa_family) {
+ switch (pnfsd_lexp_addr.ss_family) {
case AF_INET:
daddr.r_netid.data = "tcp";
daddr.r_netid.len = 3;
diff --git a/include/linux/sunrpc/svc_xprt.h b/include/linux/sunrpc/svc_xprt.h
index 52cd57501..eff2127 100644
--- a/include/linux/sunrpc/svc_xprt.h
+++ b/include/linux/sunrpc/svc_xprt.h
@@ -208,13 +208,13 @@ static inline char *__svc_print_addr(const struct sockaddr *addr,
/*
* Print a network address in a universal format (see rfc1833 and nfsv4.1)
*/
-static inline int __svc_print_netaddr(struct sockaddr *addr,
+static inline int __svc_print_netaddr(struct sockaddr_storage *addr,
struct xdr_netobj *na)
{
u16 port;
ssize_t len;
- switch (addr->sa_family) {
+ switch (addr->ss_family) {
case AF_INET: {
struct sockaddr_in *sin = (struct sockaddr_in *)addr;
port = ntohs(sin->sin_port);
@@ -235,7 +235,7 @@ static inline int __svc_print_netaddr(struct sockaddr *addr,
}
default:
snprintf(na->data, na->len, "unknown address type: %d",
- addr->sa_family);
+ addr->ss_family);
len = -EINVAL;
break;
}
--
1.7.3.4
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2011-05-31 18:20 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-31 18:20 [PATCH] pnfsd-lexp: Export correct ipv6 address for local exports Michael Groshans
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.