summaryrefslogtreecommitdiffstats
path: root/fs/nfs/internal.h
diff options
context:
space:
mode:
authorJ. Bruce Fields2008-08-20 22:10:23 +0200
committerTrond Myklebust2008-10-08 00:17:47 +0200
commitea31a4437c59219bf3ea946d58984b01a45a289c (patch)
treed386f91c39461c7505e614f0b281f0e7e9b99298 /fs/nfs/internal.h
parentnfs: prepare to share nfs_set_port (diff)
downloadkernel-qcow2-linux-ea31a4437c59219bf3ea946d58984b01a45a289c.tar.gz
kernel-qcow2-linux-ea31a4437c59219bf3ea946d58984b01a45a289c.tar.xz
kernel-qcow2-linux-ea31a4437c59219bf3ea946d58984b01a45a289c.zip
nfs: Fix misparsing of nfsv4 fs_locations attribute
The code incorrectly assumes here that the server name (or ip address) is null-terminated. This can cause referrals to fail in some cases. Also support ipv6 addresses. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/internal.h')
-rw-r--r--fs/nfs/internal.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h
index 8d91bd88e310..5d2a5d3c4241 100644
--- a/fs/nfs/internal.h
+++ b/fs/nfs/internal.h
@@ -153,6 +153,7 @@ extern void nfs4_clear_inode(struct inode *);
void nfs_zap_acl_cache(struct inode *inode);
/* super.c */
+void nfs_parse_ip_address(char *, size_t, struct sockaddr *, size_t *);
extern struct file_system_type nfs_xdev_fs_type;
#ifdef CONFIG_NFS_V4
extern struct file_system_type nfs4_xdev_fs_type;
@@ -276,6 +277,7 @@ unsigned int nfs_page_array_len(unsigned int base, size_t len)
PAGE_SIZE - 1) >> PAGE_SHIFT;
}
+#define IPV6_SCOPE_DELIMITER '%'
/*
* Set the port number in an address. Be agnostic about the address