mountd/exportfs: Make m_addrlist field a nfs_sockaddr nfs-utils-1-2-3-rc3
authorChuck Lever <chuck.lever@oracle.com>
Wed, 5 May 2010 19:41:07 +0000 (15:41 -0400)
committerSteve Dickson <steved@redhat.com>
Wed, 5 May 2010 19:42:36 +0000 (15:42 -0400)
commit6299a310d77e6495efdf7c50491f0b055fee2cfe
tree636a10692ff37c4d7fb65f59d4be8a9c91724409
parent6ff1fd42db18c657fbc5f81169a566b41d53e731
mountd/exportfs: Make m_addrlist field a nfs_sockaddr

To store non-AF_INET addresses in the nfs_client structure, we need to
use more than in_addr for the m_addrlist field.  Make m_addrlist
larger, then add a few helper functions to handle type casting and
array indexing cleanly.

We could treat the nfs_client address list as if all the addresses
in the list were the same family.  This might work for MCL_SUBNETWORK
type nfs_clients.  However, during the transition to IPv6, most hosts
will have at least one IPv4 and one IPv6 address.  For MCL_FQDN, I
think we need to have the ability to store addresses from both
families in one nfs_client.

Additionally, IPv6 scope IDs are not part of struct sin6_addr.  To
support link-local IPv6 addresses and the like, a scope ID must be
stored.

Thus, each slot in the address list needs to be capable of storing an
entire socket address, and not simply the network address part.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
support/export/client.c
support/export/nfsctl.c
support/include/exportfs.h
utils/mountd/auth.c
utils/mountd/cache.c