Skip to content

Commit

Permalink
NFS: Pull covers off IPv6 address parsing
Browse files Browse the repository at this point in the history
Now that the needed IPv6 infrastructure is in place, allow the NFS client's
IP address parser to generate AF_INET6 addresses.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
  • Loading branch information
Chuck Lever authored and Trond Myklebust committed Jan 30, 2008
1 parent 4c56801 commit 3c7c7e4
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions fs/nfs/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -652,12 +652,23 @@ static void nfs_parse_server_address(char *value,
struct sockaddr *sap,
size_t *len)
{
struct sockaddr_in *ap = (void *)sap;
if (strchr(value, ':')) {
struct sockaddr_in6 *ap = (struct sockaddr_in6 *)sap;
u8 *addr = (u8 *)&ap->sin6_addr.in6_u;

ap->sin_family = AF_INET;
*len = sizeof(*ap);
if (in4_pton(value, -1, (u8 *)&ap->sin_addr.s_addr, '\0', NULL))
return;
ap->sin6_family = AF_INET6;
*len = sizeof(*ap);
if (in6_pton(value, -1, addr, '\0', NULL))
return;
} else {
struct sockaddr_in *ap = (struct sockaddr_in *)sap;
u8 *addr = (u8 *)&ap->sin_addr.s_addr;

ap->sin_family = AF_INET;
*len = sizeof(*ap);
if (in4_pton(value, -1, addr, '\0', NULL))
return;
}

sap->sa_family = AF_UNSPEC;
*len = 0;
Expand Down

0 comments on commit 3c7c7e4

Please sign in to comment.