NFS: handle interface identifiers in incoming IPv6 addresses
authorChuck Lever <chuck.lever@oracle.com>
Mon, 23 Jun 2008 16:37:01 +0000 (12:37 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 9 Jul 2008 16:09:29 +0000 (12:09 -0400)
commitd8e7748ab8322171ebfd78f6155ff35e7d57ac32
treea9efa9e4f871a459d1b8bc3cebab133cb1a378f3
parentce3b7e1906ebbe96753fe090b36de6ffb8e0e0e7
NFS: handle interface identifiers in incoming IPv6 addresses

Add support in the kernel NFS client's address parser for interface
identifiers.

IPv6 link-local addresses require an additional "interface identifier",
which is a network device name or an integer that indexes the array of
local network interfaces.  They are suffixed to the address with a '%'.
For example:

fe80::215:c5ff:fe3b:e1b2%2

indicates an interface index of 2.  Or

fe80::215:c5ff:fe3b:e1b2%eth0

indicates that requests should be routed through the eth0 device.
Without the interface ID, link-local addresses are not usable for NFS.

Both the kernel NFS client mount option parser and the mount.nfs command
can take either form.  The mount.nfs command always passes the address
through getnameinfo(3), which usually re-writes interface indices as
device names.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/super.c